2014-02-19 4 views
1

У меня есть небольшая проблема с регулярным выражением. У меня есть следующие модели струнныхКак исключить определенный шаблон из регулярного выражения?

  1. «Эмили Уотсон (Абриль-де-1897-)»
  2. «ЭМАК Уильям (Калифорния)».

мне нужно написать регулярное выражение, которое должно извлечь только «Эмили Уотсон» с 1-й строки и «ЭМАК Уильям (калифорния)» всей строки из 2-й строки.

В основном мое регулярное выражение должно опускать текст вместе с фигурными скобками, если оно находится в следующем шаблоне «месяц в году». до сих пор я пытался

(?'NAME'[\w]+\s*[\w]+\s*\([\w]+(?![\w]+\s*de\s*\d{4}-)\)) 

В выше регулярном выражении отлично подходит для 2-ой строки работает т.е. «ЭМАК Уильяма (Калифорния)» но это не работает для моей 1-й строке «Эмили Уотсон (Абриль де 1897-) ".

В случае «Эмили Уотсон (абрил 1897 года)», я не получаю имя, то есть Эмили Уотсон.

Может ли кто-нибудь помочь мне в том, как исключить первую строку моей проблемы.

+0

Пожалуйста, не включают в себя информацию о языке, используемом в названии вопроса, если он не будет иметь смысла без него. Теги служат для этой цели. –

ответ

2

У попробовать с этим одним:

(?<NAME>.+\s\(\w+\)|.+\s(?=\(\w+\sde\s\d{4}-\))) 

Он возвращает

Emily Watson 
Emaa William (california) 
+0

Спасибо, что он работает.: D – Muralikrishna

+0

@Muralikrishna: Добро пожаловать. Не стесняйтесь повышать ответ;) – Toto

1

Вы должны поменять негативный взгляд на матч.

(?'NAME'[\w]+\s*[\w]+\s*\((?![\w]+\s*de\s*\d{4}-)[\w]+\)) 

Таким образом, первым вы проверяете, если нет month de year шаблона между скобками и затем сопоставлением, какой является между круглыми скобками, в то время как ваша версия была первое соответствие всей до последней скобки и после этого проверяя если не было month de year в бит который был оставлен.

+0

Привет, Большое спасибо за ваш ответ. Но даже обмен не работает, я получаю тот же результат, что и раньше. – Muralikrishna

Смежные вопросы