2016-12-09 5 views
-1

Ich möchte einen regulären Ausdruck in C# erstellen, um das Fragezeichen zu erreichen, außer wiederholt oder kommentiert. Zum Beispiel, wenn ich eine Zeichenfolge unterRegulärer Ausdruck zur Übereinstimmung mit Fragezeichen außer wiederholtem oder kommentiertem (-)

--??? 
?? 
asdlfkj --? 
asldfjl -? 
aslfldkf --? 
aslfkvlv --?? 
? 
-? 
dklsafdlafjd = ? 

haben, möchte ich wie unten anzupassen (zwischen Zeichen *).

--??? 
?? 
asdlfkj --? 
asldfjl -*?* 
aslfldkf --? 
aslfkvlv --?? 
*?* 
-*?* 
dklsafdlafjd = *?* 

Ich entwickle SQL-Bindemethode mit 2 Parametern.

Die erste ist SQL, zum Beispiel

select * from atable where id = ?. 

SQL Kommentar so will ich kann sie ignorieren.

Die zweite ist Parameter für SQL als Array sequenziell übereinstimmen;

Hat jemand eine gute Idee dafür?

+0

Was passiert, wenn eine Zeile mehr als eine Übereinstimmung hat? Was ist mit einer Linie, die sowohl eine Übereinstimmung als auch eine Nichtübereinstimmung aufweist? –

+0

Es ist unklar, weil Sie die Programmiersprache nicht angegeben haben und was Sie tatsächlich tun (da Sie Ihren Code/Muster nicht gepostet haben). –

Antwort

0

Wenn Sie negieren kann diese regex es sollte für Sie arbeiten:

(\?{2,}|(?<=--)\?) 

Ich weiß nicht, welche Sprache Sie arbeiten, aber Sie sollten filter durch die Linie der Lage sein. Wenden Sie diese Regex als Prädikat an und negieren Sie sie oder verwenden Sie eine exclude-Funktion.

Ich überlasse diese Implementierungsdetails Ihnen.

Verwandte Themen