正则表达式分割字符串在特定字纹
我试图分裂一个字符串可能看起来像这样的:正则表达式分割字符串在特定字纹
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#正则表达式。
如果你只是想要一个正则表达式拆就这可能工作\([^)]*(?:(?:SIC|NAICS):[^)]*)+\)
你可以做到这一点没有分裂。我会采取find_all正则表达式的方法。
(?!\s*$)(.*?)(?:\([^)]*(?:(?:SIC|NAICS):[^)]*)+\)|$)
Modifiers: s (dot allows newline) and g (global)
被警告,这将允许在标题中允许非'(SIC:/ NAICS :)'。
但是,他们不是正确的分隔符?
编辑
我的道歉。这两个regexs'可缩短至
\([^)]*(?:SIC|NAICS):[^)]*\)
和
(?!\s*$)(.*?)(?:\([^)]*(?:SIC|NAICS):[^)]*\)|$)
第二个正是我正在寻找的。 – 2012-03-28 23:55:41
太好了,很高兴帮助! – sln 2012-03-29 00:04:27
打破串入:
International Bank for Reconstruction & Development
World Bank
你可以使用:http://fiddle.re/bu4a。试试.Net!
^([^\(]+) \([^\)]+\) ([^\(]+) \([^\)]+\)
,第一组将包含“国际复兴开发银行&发展”,第二个 - “世界银行”
这似乎不适用于我,我没有得到任何匹配。 – 2012-03-28 23:02:12
什么是你想给它*分割成*?你希望每个例子有什么结果? – ruakh 2012-03-28 22:32:52
每个“名字”进入它自己的比赛。所以国际复兴开发银行(NAICS:928120; SIC:6081)世界银行(NAICS:928120; SIC:6081)匹配这组比赛{国际复兴开发银行,世界银行} – 2012-03-28 22:45:05
一个字符类不)匹配*单个字符*,而不是*字符序列*。这个'[^ \(NAICS:(\ d +); \)] +'与这个[[^()+:; ACINS \ d] +' – Tomalak 2012-03-28 22:45:46