gpt4 book ai didi

带有一个特定数字和一个单词的正则表达式

转载 作者:行者123 更新时间:2023-12-04 03:24:17 24 4
gpt4 key购买 nike

我想用正则表达式匹配一个特定的模式,但我遇到了灾难性的回溯。我想知道是否有一种方法可以匹配我想要的而不出错。我从一个简单的假设开始;我希望我的字符串只包含一个特定的数字,例如7 并且只有那个特定的数字:

^\D*7\D*$

只有找到这种模式,我才想在同一文本中寻找另一个词,例如“Coffee”;我将我的条件放入一个组 (^\D*7\D*$) 并在我的条件中引用该组,然后部分将包含“Coffee”:

(?(1)Coffee|)

是否有另一种措辞可以避免灾难性的回溯?

最佳答案

您可以使用否定前瞻来断言单词 Coffee 在右边。

^(?=.*\bCoffee\b)\D*7\D*$

模式匹配:

  • ^ 字符串开始
  • (?= 正面前瞻,断言右边是
    • .*\bCoffee\b 在单词边界 \b 之间匹配 Coffee 以防止部分匹配
  • ) 关闭前瞻
  • \D*7\D* 在可选的非数字字符之间匹配数字 7。
  • $ 字符串结束

Regex demo

注意 \D 也匹配换行符。如果你不想跨越换行边界,你可以使用 [^\r\n\d] 代替。

关于带有一个特定数字和一个单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67905177/

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