gpt4 book ai didi

regex - 正向后视贪婪

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

我想我对正则表达式中的正向 Lookbehind 如何工作有一些误解,这是一个例子:

12,2 g this is fully random
89 g random string 2
0,6 oz random stuff
1 really random stuff
假设我想匹配测量单位之后的所有内容,所以我想要“这是完全随机的”、“随机字符串 2”、“随机内容”和真正的“随机内容”。
为了做到这一点,我尝试了以下模式:
(?<=(\d(,\d)?) (g|oz)?).*
但是作为“?”表示 0 或 1,在这种情况下,模式似乎将 0 优先于 1 - 所以我得到:
enter image description here
但是测量单位必须保持“可选”,因为它不需要在字符串中(参见第四个实例)......
关于如何处理这个问题的任何想法?谢谢!

最佳答案

查看它匹配的位置以查看会发生什么会更容易。断言(?<=(\d(,\d)?) (g|oz)?)在正左为 (\d(,\d)?) 的位置为真和可选 (g|oz)?该模式从左到右,断言在多个地方为真。但在它遇到的第一个地方,它匹配 .*意味着 0+ 次任何字符,并将匹配到行尾。
查看职位on regex101
您可能会做的是匹配数字部分并在空格后跟 goz可选并为第二部分使用捕获组。

\d+(?:,\d+)?(?: g| oz)? (.*)
Regex demo

关于regex - 正向后视贪婪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64077762/

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