示例文本:
“115有客观证据表明,为海事组织各项强制性文书及其修正案(包括默示修正案)颁布国家法律的工作受到拖延,有关当局缺乏既定程序和协助这一进程的承诺(《1974年国际海上人命安全公约》,第一条;《防污公约》,第1条;LL 1966,第1条;III法典,第4款;III法典,第8款;III法典,第11款)。“
我想提取:
“SOLAS 1974,第一条;MARPOL,第1条;LL 1966,第1条;III代码,第4款;III代码,第8款;III代码,第11款”
我用过关于芬德尔(r'((.*III.*)但是它返回:
“(包括默许修正案)受到拖延,有关当局缺乏既定的程序和承诺来协助这一进程(《1974年国际海上人命安全公约》第一条;《防污公约》第1条;《1966年国际法》第1条;第三法第4款;第三法第8款;第三法第11款)。”
有什么主意,快把我逼疯了!你知道吗
不清楚您是否只想匹配括号中的
III
。在任何情况下,我都会提供解决方案,有没有检查下面。你知道吗在括号中提取文本
查看正在使用的正则表达式here。你知道吗
工作原理:
\(
按字面意思匹配此字符(
[^)]*
匹配除)
之外的任何字符任意次数\)
按字面意思匹配此字符)
如果包含
III
看到这个regex在使用here。你知道吗
与前面的逻辑相同,只是确保
III
存在(I{3}
)。你知道吗性能
在第二个例子中,
I{3}
正好匹配I
3次。这比III
更有效。你知道吗还提到了
.*?
可以用来替换[^)]*
——虽然这是真的,但是由于.*?
回溯到尽可能少的匹配,因此与之相关的性能代价是存在的。取反的字符类方法保持贪婪,避免了回溯的需要,从而提高了效率。你知道吗您可以检查这个性能比较here。你知道吗
相关问题 更多 >
编程相关推荐