Python正则表达式问题:筛选首词≥3字符后接两个单字符词的字符串
正则匹配修正方案
问题根源
你当前的正则表达式没有锚定字符串开头,它会匹配字符串中任意位置存在的“长单词+两个单字符单词”片段。比如apple wrong a b c里的wrong a b就符合\w{3,}\s\w\s\w的模式,所以被错误判定为匹配项,不符合你“以长单词开头”的核心需求。
修正后的正则表达式
要精准匹配“以3个及以上字符的单词开头,紧随两个单字符单词,后续内容不限”的字符串,必须用^锚定字符串起始位置,确保匹配从开头开始:
pattern = r'^\w{3,}\s\w\s\w.*'
验证代码
替换正则后的完整测试代码:
import pandas as pd df = pd.DataFrame({'text': ['apple wrong', 'apple wrong b c','apple a b correct', 'apple a b c correct']}) pattern = r'^\w{3,}\s\w\s\w.*' matches = df['text'].str.contains(pattern, regex=True) result = df[matches] print(result)
运行后会只输出符合要求的两条数据:
text 2 apple a b correct 3 apple a b c correct
内容的提问来源于stack exchange,提问作者EnesZ
相关产品推荐
相关产品推荐

