2015-02-13 3 views
1

Я использую это регулярное выражение, чтобы найти точные строки, но она имеет тенденцию игнорировать следующие строки,Регулярное выражение игнорирует текст «(10)»

Это работает,

var textFragmentAbsorber = new TextFragmentAbsorber(@"internal(?=\s|$)"); 

Это не делает,

var textFragmentAbsorber = new TextFragmentAbsorber(@"internal (10) Ab(?=\s|$)"); 

к не работает, я имею в виду, что не находит текст "внутренний (10) Ab"

Full code reference

Text Я получаю от веб-сервисов, так что все, что я могу сделать, это добавить регулярное выражение в конце концов ... это может быть (10) или (((((1000, я не могу себе представить

+0

Попробуйте использовать [txt2re] (http://txt2re.com/) в будущем, это предотвратит эти ошибки. – cybermonkey

ответ

6
internal \(10\) Ab(?=\s|$) 

Вам необходимо избегать (). () имеет особое значение и используется для группировки. Если вы хотите буквально (), вам нужно сбежать от него. Смотрите демоверсию.

https://www.regex101.com/r/rK5lU1/8

Если это может быть (10) или ((((10000))))

Тогда попробуйте internal \(*\d+\)* Ab(?=\s|$)

+0

Grats 20k vks:] –

+1

У нас будут некоторые чаи или даже более сильные напитки на вашей большой вечеринке, а потом, может быть, посмотрим ... :) –

+0

@ Jonny5 ur welcome :) party and chai .... netime :) – vks

4

В регулярных выражениях () специальные метасимволы, которые представляют начало и конец захвата группы. Вам нужно сбежать из скобок, чтобы соответствовать буквам (, ) символов.

var textFragmentAbsorber = new TextFragmentAbsorber(@"internal \(10\) Ab(?=\s|$)");