Regex Split String в определенном шаблоне слова - PullRequest
2 голосов
/ 29 марта 2012

Я пытаюсь разбить строку, которая может выглядеть следующим образом:

International Bank for Reconstruction & Development (NAICS: 928120; SIC: 6081) World Bank (NAICS: 928120; SIC: 6081)

на этот

International Bank for Reconstruction & Development
World Bank

или любой из этих:

International Bank for Reconstruction & Development
International Bank for Reconstruction & Development (SIC: 6081)
International Bank for Reconstruction & Development (NAICS: 928120)

в этом

International Bank for Reconstruction & Development

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

Я пробовал несколько вещей, использование классов отрицательных символов не работает:

[^\(NAICS: (\d+);\)]+

Я использую C # Regex.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Если вы хотите, чтобы регулярное выражение делилось на это, может сработать \([^)]*(?:(?:SIC|NAICS):[^)]*)+\)

Вы можете сделать это без разделения. Я бы применил метод регулярных выражений find_all.

(?!\s*$)(.*?)(?:\([^)]*(?:(?:SIC|NAICS):[^)]*)+\)|$)
Modifiers: s (dot allows newline) and g (global)

Имейте в виду, это разрешит не '(SIC: / NAICS :)' в заголовке.
Но ведь они не являются разделителями, верно?

редактировать

Мои извинения. Эти два регулярных выражения могут быть сокращены до

\([^)]*(?:SIC|NAICS):[^)]*\)

и

(?!\s*$)(.*?)(?:\([^)]*(?:SIC|NAICS):[^)]*\)|$)

0 голосов
/ 29 марта 2012

Чтобы разбить строку на:

International Bank for Reconstruction & Development
World Bank

Вы можете использовать: http://fiddle.re/bu4a. Попробуйте .Net!

^([^\(]+) \([^\)]+\) ([^\(]+) \([^\)]+\)

Первая группа будет содержать « Международный банк реконструкции и развития », вторая - « World Bank »

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...