gpt4 book ai didi

python - 正则表达式匹配单独或被下划线包围的单词

转载 作者:行者123 更新时间:2023-12-04 14:50:29 25 4
gpt4 key购买 nike

我正在尝试匹配单词 int 本身或被下划线 (_) 包围的单词。

int  # match
_int_ # match
__int__ # match
some_int # match
int_var # match
integration # doesn't match
mint # doesn't match

这是我一直在尝试的,但它只匹配上面的第二种情况

pattern = re.compile(r"(?<=[\W_])int(?=[\W_])")

我应该怎么做呢?谢谢大家

最佳答案

在这种情况下你需要使用双重否定逻辑:

(?<![^\W_])int(?![^\W_])

参见 regex demo .

(?<![^\W_]) lookbehind 匹配除非单词和 _ 之外没有紧跟任何字符的位置。字符。这意味着,必须有字符串位置的开头或除 _ 之外的任何非单词字符。就在左边。

(?![^\W_]) lookahead 匹配一个位置,该位置后面没有紧跟非单词和 _ 以外的任何字符字符。这意味着,必须有字符串结束位置或除 _ 以外的任何非单词字符。立即在右边。

您的正则表达式中,(?<=[\W_])您使用的正后视需要一个非单词或_紧接着在左边和(?=[\W_])正面前瞻需要紧靠右侧的非单词或下划线字符。因此,这些环视不允许匹配字符串的开头或结尾

注意:因为您使用的是 Python re , 你不能简单地添加 ^|替代你的回顾,因为 Python re does not allow具有非固定宽度模式的后视。 (?<=[\W_]|^)int(?=[\W_]|$)将在 PHP/PCRE、Java、Ruby/Onigmo 中工作,但不能在 Python 中工作 re .这就是为什么双重否定方式是这里唯一的方式。

关于python - 正则表达式匹配单独或被下划线包围的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69142119/

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