gpt4 book ai didi

regex - 如何在正则表达式中匹配 "anything up until this sequence of characters"?

转载 作者:行者123 更新时间:2023-12-03 03:55:32 26 4
gpt4 key购买 nike

采用正则表达式:/^[^abc]/。这将匹配字符串开头的任何单个字符,abc 除外。

如果在其后添加 */^[^abc]*/ – 正则表达式将继续将每个后续字符添加到结果中,直到满足abc

例如,对于源字符串“qwerty qwertywhat abc hello”,表达式将匹配“qwerty qwerty wh”

但是如果我希望匹配字符串是“qwerty qwertywhat”怎么办?

换句话说,如何将所有内容匹配(但不包括)精确序列 “abc”

最佳答案

您没有指定您正在使用哪种正则表达式,但这会适用于任何可以被视为“完整”的最流行的工作。

/.+?(?=abc)/

它是如何工作的

.+? 部分是 .+ 的非贪婪版本(一个或多个任何事物)。当我们使用 .+ 时,引擎基本上会匹配所有内容。然后,如果正则表达式中有其他内容,它将按步骤返回尝试匹配以下部分。这就是贪婪行为,意思是尽可能满足

当使用.+?时,而不是一次匹配所有内容然后返回其他条件(如果有),引擎将匹配下一个字符步骤直到正则表达式的后续部分匹配(如果有的话再次匹配)。这是非贪婪,意味着匹配尽可能少的满足

/.+X/  ~ "abcXabcXabcX"        /.+/  ~ "abcXabcXabcX"
^^^^^^^^^^^^ ^^^^^^^^^^^^

/.+?X/ ~ "abcXabcXabcX" /.+?/ ~ "abcXabcXabcX"
^^^^ ^

接下来我们有 (?={contents}),一个零宽度断言环顾四周。这种分组结构与其内容,但不计为匹配的字符(零宽度)。它仅在匹配或不匹配时返回(断言)。

因此,换句话说,正则表达式 /.+?(?=abc)/ 的含义是:

Match any characters as few as possible until a "abc" is found, without counting the "abc".

关于regex - 如何在正则表达式中匹配 "anything up until this sequence of characters"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7124778/

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