2016-08-11 7 views
0

Ich habe die folgende Zeichenfolge:Regex Klammer

The service(s), foo bar 

ich einen regulären Ausdruck, die die Worte überprüft, ob ‚Der‘ und ‚Service (s)‘ im String enthalten sind. Ich soll mit Backslash den Klammern entkommen, aber es scheint nicht zu funktionieren. Ich muss die logische Struktur dieses Regex verwenden. Kannst du mir helfen, die Flucht zu reparieren?

Problem:

(^(?=.*\b(?i)The(?-i)\b)(?=.*\b(?i)service\(s\)(?-i)\b).*$) 

Zielsprache C# ist.

+1

Ihre regex setzen innerhalb @ „“ –

+1

entfernen letzte '\ b 'Token – revo

Antwort

1

Die schließende Klammer in service(s) bestätigt, dass die nächste unmittelbare Position eine Nicht-Wort-Grenze ist. Sie brauchen also nicht letzten \b Token, da Sie möglicherweise eine Nicht-Wort-Grenze \B gemeint haben. Ich glaube nicht, Sie müssen geschärft und entschärft Groß- und Kleinschreibung Modifikator entweder:

(?i)(?=.*\bThe\b)(?=.*\bservice\(s\)\B).*$ 
+0

Sehr interessant Dank. Ich verstehe den Unterschied jetzt. – Ashton

+0

Gibt es einen Begrenzungsmarker, der ignoriert, ob die Grenze ein Wort oder ein Nicht-Wort ist? – Ashton

+0

Vielleicht, wenn Sie Boundary Token entfernen? @Ashton – revo

Verwandte Themen