Python正则表达式:匹配数字+k但排除其后紧跟hours的情况
解决Python re模块中匹配「数字+k」但排除后续紧跟"hours"的问题
直接用负向预查就能实现需求,正则表达式如下:
pattern = r'\d+k(?!\s*hours)'
正则说明
\d+:匹配任意长度的数字(比如100、200、5等)k:匹配小写字母k(如果需要支持大写K,可在re.search时加参数flags=re.IGNORECASE)(?!\s*hours):负向预查核心逻辑——断言当前位置之后不会出现「0个或多个空白字符 + hours」的组合,不管数字k和hours之间有没有空格,都会被排除。
代码示例
import re test_str1 = "100k bla bla bla" test_str2 = "100k hours bla bla" match1 = re.search(pattern, test_str1) match2 = re.search(pattern, test_str2) print(match1.group() if match1 else "") # 输出:100k print(match2.group() if match2 else "") # 输出:空字符串
如果需要批量匹配多个符合条件的结果,可以用re.findall()代替re.search()。
内容的提问来源于stack exchange,提问作者cryndry
相关产品推荐
相关产品推荐

