如何编写正则匹配独立存在或被下划线包裹的int单词?
正则表达式调整方案
你当前的正则要求int的前后必须存在非单词字符或下划线,无法匹配int出现在字符串开头/结尾的场景(比如独立的int、开头的int_var、结尾的some_int),可以调整为以下写法:
pattern = re.compile(r"(?<=^|[\W_])int(?=$|[\W_])")
规则说明:
- 左侧断言
(?<=^|[\W_]):int的前面要么是字符串开头,要么是非单词字符/下划线 - 右侧断言
(?=$|[\W_]):int的后面要么是字符串结尾,要么是非单词字符/下划线
也可以用更简洁的排除式断言实现完全一致的效果:
pattern = re.compile(r"(?<![a-zA-Z0-9])int(?![a-zA-Z0-9])")
两种写法都完全符合你的匹配要求:
- 可匹配:
int、_int_、__int__、some_int、int_var - 自动排除:
integration(int后接字母e)、mint(int前接字母m)
内容的提问来源于stack exchange,提问作者Mike Pham
相关产品推荐
相关产品推荐

