如何编写正则匹配未被双引号包裹且中间带短横线的字符串
正则匹配修正方案
你要实现的匹配需求可以用以下正则表达式完成:
(?<!")\b\w+-\w+\b(?!")
规则说明
(?<!"):负向逆序环视,保证匹配到的词条左侧没有双引号,排除被左引号包裹的情况\b:单词边界,确保匹配完整的独立词条,不会从字符串中间截断匹配\w+-\w+:匹配中间包含短横线、前后为字母/数字/下划线的词条,如果你不需要匹配下划线,可以替换为[a-zA-Z0-9]+-[a-zA-Z0-9]+(?!"):负向顺序环视,保证匹配到的词条右侧没有双引号,排除被右引号包裹的情况
原正则问题分析
你之前写的正则仅在词条末尾加了后置负环视,既没有判断词条左侧是否存在引号,环视的作用位置也不正确,因此无法过滤被双引号包裹的符合格式的词条。
内容的提问来源于stack exchange,提问作者rulogaf
相关产品推荐
相关产品推荐

