Python正则匹配含连字符最后一个单词前内容失败求助
正则匹配解决方案
问题分析
你当前使用的正则(.*\b)(?=\w+-)存在逻辑缺陷:贪婪模式的.*会尽可能匹配到最后一个\w+-的位置,但目标字符串中最后一个含连字符的单词ldf-dfdlj-dfldjf-dfs内部包含多个\w+-片段(比如ldf-、dfdlj-),导致正则停在该单词内部的倒数第二个-前,匹配出多余内容。
可行方案
以下两种正则均可精准匹配到最后一个含连字符单词之前的所有内容:
方案1:正向预查直接匹配结果
^(.*?)(?=\s+\S+-\S+(?:\s+\S+)*$)
- 核心逻辑:非贪婪匹配开头到满足预查条件的位置,预查部分确保后面是「空白+含连字符的单词+任意不含连字符的单词直到结尾」,精准锁定最后一个含连字符的单词位置。
方案2:全匹配后取捕获组
^(.*)\s+\S+-\S+(?:\s+\S+)*$
- 核心逻辑:完整匹配整个输入字符串,捕获组
$1即为你需要的目标内容(最后一个含连字符单词之前的所有内容)。
测试验证
对输入字符串13wfe + 123dg Tetest-xt ldf-dfdlj-dfldjf-dfs test 123,两种方案均能输出预期结果:13wfe + 123dg Tetest-xt
内容的提问来源于stack exchange,提问作者Tony Montana
相关产品推荐
相关产品推荐

