gpt4 book ai didi

c - C 中的正则表达式 : Match pattern with a string in the middle

转载 作者:行者123 更新时间:2023-11-30 15:41:02 26 4
gpt4 key购买 nike

因此,我尝试在 C 中使用 RegEx 来最小化 bool 表达式。

我需要一个正则表达式来匹配XXX AND XXX,其中“XXX”两端是相同的,例如,我需要匹配:

((p OR q) AND (p OR q))

匹配

(p AND (p OR q))

因为 AND 的右侧并不完全是左侧的,所以我可以将其替换为 only

(p OR q)

我想我得到了替换位,但我需要正则表达式来匹配所述的内容。

谢谢:)

最佳答案

你可以使用类似的东西:

(.+?)(?: AND \1)+

那么您只需替换为第一个捕获组的内容即可。

请注意,您可以在模式的开头添加 (?s) 以允许点匹配换行符。

这是一个更防水的图案:

(?s)(.+?)(?:\s+AND\s+\1)+

要删除表达式周围可能的括号,您可以使用:

(?s)(\(\s*)(.+?)(?:\s+AND\s+\2)+(?(1)\s*\))

请注意,您必须多次应用此替换(直到不再有匹配项)才能获得所需的结果,因为您可能会有重叠的匹配项。示例:

(((p OR q) AND (p OR q)) AND ((p OR q) AND (p OR q)))

关于c - C 中的正则表达式 : Match pattern with a string in the middle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713041/

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