gpt4 book ai didi

javascript - 即使使用惰性量词,正则表达式也保持贪婪

转载 作者:行者123 更新时间:2023-11-30 20:07:40 24 4
gpt4 key购买 nike

这是我的正则表达式 ^((\{.+:.+\})|([^{:}]))+?$

这是我想要的:
有效案例:{test:test1} {test2:test3} test4 test5
大小写无效:{test:}{test1: test2test1: test3}

这意味着只要我的字符串具有这三个字符之一:'{' ':', '}' 它还必须具有 2 个剩余字符。

当我的字符串不以 } 字符结尾时,我的正则表达式运行良好。我想这是因为贪婪的量词。但是我已经将 ? 字符放在 + 量词之后,它仍然无法正常工作。我究竟做错了什么?

最佳答案

你可以使用

^(?:\{[^{}:]*:[^:{}]*}|[^{:}])+$

参见 regex demo .

详情

  • ^ - 字符串开始
  • (?:\{[^{}:]*:[^:{}]*}|[^{:}])+ - 一个 non-capturing group匹配 1 次或多次出现
    • \{[^{}:]*:[^:{}]*} - 一个 { ,然后是除 { 以外的任何 0+ 个字符, }: , 然后 : ,然后是除 { 以外的任何 0+ 个字符, }: , 和一个 }
    • | - 或者
    • [^{:}] - 除 { 以外的任何字符, }:
  • $ - 字符串结束。

关于javascript - 即使使用惰性量词,正则表达式也保持贪婪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719266/

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