你能限制正则表达式中两个捕获组之间的单词吗
Can you limit the words between two capturing groups in Regex
我一直在尝试为法律文本创建解析器。
我需要找到一种方法来查找“外部链接”,例如:art。 45阿林。 (1) din Lege nr. 54/2000
但问题是我的国家法律写作风格太不统一了,这意味着有时链接可能看起来像这样:articolul 45 alineatul (1) din Legeea nr。 30/2000
事实上,我的语言已经有好几天了。 (articol, articolului, articolelor....)
这意味着我需要概括第一件事... (art.) 尽可能多地捕捉表格并祈祷最后一件事是法律编号& 年份 (54/2000).
现在困难的部分来了...问题是每个以 Articol N 开头的部分都会启动正则表达式并继续下去直到找到法律编号& 年份完全没有关系。
这是它的样子\b(((A|a)rt.*?) \(?\d*?\)??)( \w*? )*?nr\.? (\d+\/\d\d\d\d|\d+\/\d\d\d\d)\b
我的问题是有没有办法限制两个捕获组之间的单词?
Link 到文档以确定哪些应该通过,哪些不可以:
https://docs.google.com/document/d/1vn2HwYaCq8UB1felY1GvfmbTI2w8o5RgW4efD9fsvQM/edit?usp=sharing
正如 Cary 和 James 在上面的评论中回答的那样,我使用了 (?:\S+\s*){0,15}
。我使用 \S 而不是 \w 来包含标点符号,因此,法律名称的缩写形式(例如 Const . 用于 宪法 )。这就是为什么即使使用 {m,n}
.
我的原始正则表达式也无法正常工作的原因
我一直在尝试为法律文本创建解析器。
我需要找到一种方法来查找“外部链接”,例如:art。 45阿林。 (1) din Lege nr. 54/2000
但问题是我的国家法律写作风格太不统一了,这意味着有时链接可能看起来像这样:articolul 45 alineatul (1) din Legeea nr。 30/2000
事实上,我的语言已经有好几天了。 (articol, articolului, articolelor....)
这意味着我需要概括第一件事... (art.) 尽可能多地捕捉表格并祈祷最后一件事是法律编号& 年份 (54/2000).
现在困难的部分来了...问题是每个以 Articol N 开头的部分都会启动正则表达式并继续下去直到找到法律编号& 年份完全没有关系。
这是它的样子\b(((A|a)rt.*?) \(?\d*?\)??)( \w*? )*?nr\.? (\d+\/\d\d\d\d|\d+\/\d\d\d\d)\b
我的问题是有没有办法限制两个捕获组之间的单词?
Link 到文档以确定哪些应该通过,哪些不可以:
https://docs.google.com/document/d/1vn2HwYaCq8UB1felY1GvfmbTI2w8o5RgW4efD9fsvQM/edit?usp=sharing
正如 Cary 和 James 在上面的评论中回答的那样,我使用了 (?:\S+\s*){0,15}
。我使用 \S 而不是 \w 来包含标点符号,因此,法律名称的缩写形式(例如 Const . 用于 宪法 )。这就是为什么即使使用 {m,n}
.