使用javascript
通常,此正则表达式可以正常工作,但是我经常发现由于OCR拾取的文本中缺少字符或出现了奇数的标点符号而使它在文本中进行的选择范围更广。 我想做的是确保它在第14段的字符串中停止并且在匹配中没有任何进一步的变化。我正在搜索成千上万的文档,之后这些文档的文本都会略有不同,因此我需要一种以某种方式停止搜索的方法。 如何在第14段添加单词边界?
此外,在下面的字符串中,如果第3(b)款带有方括号,则将其捕获到组中。但是,如果只有第3款,则不会捕获它。 在下面的文字中,我希望它可以选择第3段,然后在到达第14段时停止搜索。 用于组捕获的可能的文本选项是:
第3段
第3(b)段
第10段
正则表达式:
Para[a-z]+ 13\S+\s+E[\s\S]*?\(B\)\s["']Ret[a-z]+ Am[a-z]+["'].*?(Paragraph \S+[^.\s])
字符串:
第13段,选举和变量-io。以下条款和投资组合交易, 本附件第13段的条件仅适用于 乙方(“桥梁协议”):(a) 摩根士丹利关于合格公司之间的过渡协议 LLC和“义务”。附加义务:关于 答:本附件中的“义务”一词包括以下内容: 没有。关于B:无。 (b)信贷支持义务。 (i)交货金额,退货金额和信用支持金额。 (一种) “交货(B)“退货金额”具有“金额”中指定的含义”具有 本附件第3段中指定的含义。 (C)第3(a)款
第14段。选举和变量-传输时间。段 4(b)
答案 0 :(得分:0)
要捕获带有单词后缀且可能带有括号的段落:
Paragraph (\w+|\(\w+\))
以这种方式限制您的匹配文本:(最多50个字符的惰性)
.{0,50}
在正则表达式的末尾使用否定的前瞻:(换行符,后跟单词段落)
(?!\nParagraph (\w+|\(\w+\)))
因此,将您的正则表达式合并为:
.{0,50}(?!\nParagraph (\w+|\(\w+\)))
在您的正则表达式中
Paragraph (\w+|\(\w+\))\S+\s+E[\s\S]*?\(B\)\s["']Ret[a-z]+ Am[a-z]+["'].{0,500}(?!\nParagraph (\w+|\(\w+\)))
答案 1 :(得分:0)
对我来说仍然不太有效。让我添加两个简单的示例。
第12段,第13段,第3(b)段,第14段,第6段
在此示例中,所有方法均有效,它正确捕获了第3(b)段。
现在,另一个例子-
第12段,第13段,第3(b)段,第14段,第6段
在此示例中,存在拼写错误,因此它错误地捕获了第6段。 在这里,我需要它在找到第14段时停止并且不捕获任何内容。