我正在编写一些常规的expr来从文本中提取句子。我的问题是我的表情也收到了不需要的文本...

例如:

主要文字

1)
.......
.......
发明人:Peng Ji,北京(CN);林Lu,北京
(CN); Vugranam C.Sreedhar,
纽约州约克敦高地(美国);顺
北京向阳(CN);张瑜
北京(CN)
(73)受让人:国际商业机器
公司,纽约阿蒙克(美国)
........
........

2)
.......
.......
(75)发明人:东京都桂山聪(JP);
东京山山智惠(JP);高志
东京平野(JP)
(73)受让人:东京住友电木有限公司
(J.P)
.......
........


我想提取如下(预期输出):

(75)发明人:东京都桂山聪(JP);
东京山山智惠(JP);高志
东京平野(JP)

(75)发明人:东京都桂山聪(JP);
东京山山智惠(JP);高志
东京平野(JP)

我的工作与研究:

所以我建立了一个这样的正则表达式:

(?s)。\ s * Inventor \ w *:\ s * \ w *([\ w \ d,。\ s)(-] +);([[wws \ r。 ;] +)

我遇到的问题:

但是我的正则表达式是这样的返回输出

发明人:Peng Ji,北京(CN);林Lu,北京
(CN); Vugranam C.Sreedhar,
纽约州约克敦高地(美国);顺
北京向阳(CN);张瑜
北京(CN)
(73)受让人

发明人:东京胜桂山聪(JP);
东京山山智惠(JP);高志
东京平野(JP)
(73)受让人

那就是(73)受让人也可以通过我的表达式来解析,但是我不需要它..我做了很多尝试,但无法解决我的问题。

我的努力:
我也尝试过NOT ^运算符,但是我没有工作。.由于我是regex的新手,所以我不能承担太多的费用。

请指导我从解析中删除(73)受让人 ..

最佳答案

您可以在正则表达式后使用正向前瞻。

您的最终正则表达式(进行了一些改进)如下所示:

(?s)\(75\)\s+Inventor\w*:\s*\w*([\w\d,.\s)(-]+);([\w\s.\',();]+)(?=\(73\)\s+Assignee:)

描述

关于java - 如何组装包含换行符的正则表达式并停在特定的字符序列上?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21182409/

10-11 04:59