gpt4 book ai didi

regex - 正则表达式中可以有重叠字符吗?

转载 作者:行者123 更新时间:2023-12-02 01:21:26 26 4
gpt4 key购买 nike

好吧有点奇怪。我知道您可以做一些不同的事情并得到您想要的,但我只是好奇该功能是否存在于某处或以某种方式存在于单个正则表达式行中。

这是一个示例表达式:

(?s)^\\sqrt[^A-Za-z].*?(\{\\rho\})
^ ^
1 2

字符 1 [^A-Za-z] 正在检查分隔符。

字符 2 \{ 可能是那个分隔符。它也可能是一个空格或大量其他随机字符。

但是,即使分隔符是空格,\{也必须存在,这意味着[{]并不理想。

是否可以只确认字符1所填充的位置不是字母,而不是算作一个字符?逻辑有点像;

if ("(?s)^\\sqrt[^A-Za-z]" matches) {
Proceed to evaluate as "(?s)^\\sqrt.*?(\{\\rho\})"
}

最佳答案

您描述的逻辑符合否定先行行为:它确保当前位置之后的文本与其模式不匹配。

使用

(?s)^\\sqrt(?![A-Za-z]).*?(\{\\rho\})

enter image description here

在这里,^ 匹配字符串的开头,然后 \\sqrt 匹配 \sqrt 并且在它之后,正则表达式引擎断言那里(?![A-Za-z]) 负先行后没有 ASCII 字母。然后,.*?(\{\\rho\}) 继续匹配其余部分。

参见 regex demo .

此外,有关更多详细信息,请参阅另一个描述 negative lookahead 的 SO 线程行为。

关于regex - 正则表达式中可以有重叠字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40029037/

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