Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Espressione regolare con doppio apice all'interno

    Ciao a tutti!
    Devo eseguire una Regex che contiene doppi apici.
    Per la precisione questa:

    /(".*?"|[^",\s]+)(?=\s*,|\s*$)/g

    Il problema è che quando la dichiaro (essendo una stringa) i doppi apici mi creano problemi di sintassi.

    Alchè ho modificato il tutto così

    /("".*?""|[^"",\s]+)(?=\s*,|\s*$)/g

    Così risolvo i problemi di sintassi, tuttavia la regex non funziona più....

    La funzione della regex è quella di dividere una stringa usando come delimitatore la virgola (,) ignorando le virgole contenute tra i doppi apici:

    Es:
    Ciao, peso, "3,5 kg"

    la virgola del 3,5 non verrà considerata delimiter.
    Che sto sbagliando?

    Come avrete capito il file sul quale lavoro è un CSV e non posso discostarmi da questa sintassi perchè va caricato tramite un software che riconosce solo questa!

    Grazie a tutti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2014
    residenza
    Vicenza
    Messaggi
    318
    se ci mostri del codice VB.NET dove possiamo fare delle prove sarebbe meglio, perchè detta così non ha senso, io ho delle regex con doppi apice, le ho messe doppie come hai fatto tu e funziona tutto perfettamente

    questo ad esempio a me funziona:
    codice:
    Imports System.Text.RegularExpressions
    
            Dim regs = Regex.Matches("Ciao, peso, ""3,5 kg""", "("".*?""|[^"",\s]+)(?=\s*,|\s*$)")
    
            Dim txt = ""
            For Each reg As Match In regs
                If reg.Success Then
                    txt &= reg.Groups(1).Value & vbCrLf
                End If
            Next
            MsgBox(txt)
    comune sei sicura che il pattern che hai dato sia corretto ??
    se provo con
    Ciao,peso,,"3,5 kg"
    non funziona, dovrebbe anche riconoscere il valore vuoto

    quindi meglio secondo me se usi
    codice:
    Dim pattern = "(?:,|\n|^)(""(?:(?:"""")*[^""]*)*""|[^"",\n]*|(?:\n|$))"
    Ultima modifica di SirJo; 21-09-2023 a 20:29

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.