gpt4 book ai didi

regex - 使用正则表达式否定前瞻排除确切的字符串

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

我想使用正则表达式从字符串中排除 pqr

我目前拥有的是

abc\/(?!.*pqr).*\/xyz

这正确地拒绝了 abc/pqr/xyz,但它也拒绝了我希望它匹配的 abc/pqrst/xyz

我希望 pqr 只在它是一个完整的单词时被排除,而不是在它是一个较长单词的子字符串时被排除,例如 pqrst

最佳答案

您可以使用 word boundaries使用前瞻内的 pqr:

 abc\/(?!.*\bpqr\b).*\/xyz
^^ ^^

参见 regex demo .如果你不使用单词边界,任何 pqr 都会导致正则表达式失败,当你添加单词边界时,只有那些匹配失败的地方 pqr 是一个完整的单词。

另一种方法是在特定上下文中匹配 pqr:

 abc\/(?!(?:.*\/)?pqr\/).*\/xyz

参见 another demo .此处,(?!(?:.*\/)?pqr\/) 将匹配 abc/ 之后或 abc 后跟 0 + 直到最后一个 / 的任何字符,并且仅当其后跟另一个 / 时。在所有其他情况下,您将有一个匹配项。

注意:相同的方法应该应用于 xyz(您可以在它之后添加一个 \b 以匹配整个单词 xyz

注意 2:要要求 pqr 出现在 xyz 之前,请使用 abc\/(?!(?:(?!\/xyz).)*\bpqr\b).*\/xyz.

关于regex - 使用正则表达式否定前瞻排除确切的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39893630/

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