gpt4 book ai didi

php - 正向前瞻正则表达式令人困惑

转载 作者:行者123 更新时间:2023-11-29 14:43:02 26 4
gpt4 key购买 nike

我正在构建这个正则表达式,其中包含积极的展望。基本上,它必须选择行中直到“:”之前的最后一个句点的所有文本,并添加“|”到最后来界定它。下面是一些示例文本。我正在 gskinner 和 editpadpro 中对此进行测试,它们显然具有完整的 grep 正则表达式支持,因此如果我能从中得到答案,我将不胜感激。

下面的正则表达式在一定程度上有效,但我不确定它是否正确。如果文本包含括号,它也会下降。

最后,我想添加另一个忽略规则,例如忽略但包含“Co”的规则。在选择中。第二个忽略规则将忽略但包括前面有一个大写字母的句点。下面还有示例文本。感谢您的所有帮助。

^(?:[^|]+\|){3}(.*?)[^(?:Co)]\.(?=[^:]*?\:)

121| Ryan, T.N. |2001. |I like regex. But does it like me (2) 2: 615-631.
122| O' Toole, H.Y. |2004. |(Note on the regex). Pages 90-91 In: Ryan, A. & Toole, B.L. (Editors) Guide to the regex functionality in php. Timmy, Tommy& Stewie, Quohog. * Produced for Family Guy in Quohog.

最佳答案

我想我不明白你想做什么。但这部分[^(?:Co)]绝对不正确。

使用方括号您可以创建一个字符类,因为 ^ 它是一个否定类。这意味着在这个地方您不想匹配这些字符之一 (?:Co),换句话说,它将匹配除“?)(:Co”之外的任何其他字符。

更新:

我认为这是不可能的。我应该如何区分 L. Co. 或类似的内容和句子的结尾?

但是我在你的正则表达式中发现了另一个错误。如果要匹配最后一个部分,最后一部分 (?=[^:]*?\:) 应该是 (?=[^.]*?\:) : 之前的点与您的表达式将匹配第一个点。

查看here on Regexr

关于php - 正向前瞻正则表达式令人困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7596484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com