正则表达式分裂字符串在特定的单词模式

时间:2012-03-28 22:30:42

标签: regex c#-4.0

我正在尝试拆分一个看起来像这样的字符串:

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 :(得分:0)

将字符串分解为:

International Bank for Reconstruction & Development
World Bank

您可以使用:http://fiddle.re/bu4a。试试.Net!

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

第一组将包含“国际重建与发展银行”,第二组 - “世界银行

答案 1 :(得分:0)

如果你只想要一个正则表达式进行拆分,这可能会有效\([^)]*(?:(?:SIC|NAICS):[^)]*)+\)

你可以不分裂地做到这一点。我会采用find_all正则表达式方法。

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

警告,这将允许在标题中允许非'(SIC:/ NAICS :)' 但是,他们不是权利人吗?

修改

道歉。这两个正则表达式可以缩短为

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

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