gpt4 book ai didi

regex - 不知道如何正确使用环视来实现我的正则表达式匹配

转载 作者:行者123 更新时间:2023-12-01 07:05:12 28 4
gpt4 key购买 nike

我正在编写一个 perl 脚本,其中的一部分要求我匹配字符串中所有出现的特定模式。自然地,正则表达式似乎已经足够强大了,但我就是无法正确处理这个特定的字符串。

正则表达式可能适用的文本类型的假设示例是:

1cat;2dog;!3monkey;!4horse;

如您所见,该行中存在多个数据条目(1cat、2dog 等),以分号分隔。该行的开头不包含分号,但末尾包含。我希望能够匹配所有没有被 ! 忽略的东西。在上面的示例中,1cat 和 2dog 将在列表上下文中匹配并返回,而 3monkey 和 4horse 则不会。

到目前为止,我尝试做的是使用负面回顾来仅注意没有 ! 的条目。像这样:

m/(?<!\!)(\w+)\;/g

但是,这不起作用,因为对于每个 !'ed 条目,正则表达式只匹配它后面的内容,直到分号。在示例中,捕获了 1cat 和 2dog,然后捕获了 monkey 和 horse。

我觉得这很容易做到,但我是正则表达式的新手,我想不出别的。

最佳答案

抛出 word boundary (\b)在那里和you should be good :

(?<!!)\b(\w+);

你可以看出你的负向后视正在工作,但它仍然会匹配下一个字符之后的所有内容(horse 来自 !4horse) .单词边界是零宽度断言,有点像不匹配任何内容的条件(如 anchor ^$)。它为此断言:(^\w|\w\W|\W\w|\w$)。换句话说,任何时候一个单词字符 ([a-zA-Z0-9_]) 紧挨着字符串的开头/结尾或一个非单词字符。

关于regex - 不知道如何正确使用环视来实现我的正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23961049/

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