一个多小时我一直在head头,但没有结果。因此,该寻求帮助了。
在以下(多行)文本中:
Waltzes卷15
Waltzes卷。15
Waltzes卷。一个
华尔兹,卷15
卷15:华尔兹
粗体部分是到目前为止我想到的RegEx的匹配项:
(?!^),*\s*(?:vol[ume]*\.*)\s*(?=[0-9A-Z]+)
除最后一个外,所有其他内容都是正确的,因为最后一行位于行首,因此不应包括在内。
据我可以在文档告诉http://www.regular-expressions.info/refadv.html,在(?!^)
环视部分的表达应该排除比赛发现,*\s*(?:vol[ume]*\.*)\s*(?=[0-9A-Z]+)
在一行的开头,但不似乎有效。
另一方面,该表达式(?!^)op[us]*\.*\s*(?=[0-9]+)
可以正常工作,并且在以下文本的最后一行中不返回匹配项:
Waltzes op。15
Waltzes作品15 15
作品:waltzes
第一个表达式我在做什么错?
这就是为什么您的正则表达式无法按预期工作的原因
<
。它应该是(?<!^)
(?:vol[ume]*\.*)
立即开始(?m)
(没有多行^
只能匹配输入的开始)因此,经过这些更正的正则表达式变为
(?m),*\s*(?<!^)(?:vol[ume]*\.*)\s*(?=[0-9A-Z]+)
以上工作,但可以进一步改进。使用[ume]*
还会使match等匹配voleee
,volmeu
而不是与绑定*
,,
并且.
可以通过使其成为可选?
。
(?m),?\s*(?<!^)(?:vol\.?|volume)\s*(?=[0-9A-Z]+)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句