我正在编写一些常规的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/