如何编写正则表达式仅匹配含Linux字符串行的引号内全部内容
正确正则表达式及说明
问题分析
你之前编写的正则存在几个核心错误:
- 将
.*放在字符组[]中,字符组内的.和*会被识别为普通字符,无法实现「匹配任意长度任意字符」的效果 - 使用
<Linux>的写法匹配完整单词不符合主流正则引擎的语法规范,常规单词边界标识为\b - 额外引入了单引号
'的匹配逻辑,和需求里仅匹配双引号包裹内容的场景不符
可用正则方案
基础版本(直接满足需求)
"[^"]*Linux[^"]*"
语法解释:
- 开头的
"匹配内容起始的双引号 [^"]*匹配除双引号外的任意字符、任意长度,避免出现跨双引号匹配的问题Linux匹配指定关键词- 后续
[^"]*匹配关键词后到结尾双引号前的所有内容 - 结尾的
"匹配内容结束的双引号
如果需要严格匹配Linux完整单词(避免匹配到LinuxTest这类包含Linux的复合词),可以加上单词边界标识:
"[^"]*\bLinux\b[^"]*"
仅提取双引号内内容(不含外层双引号)
如果需要直接拿到双引号包裹的内部内容,可以增加捕获组:
"([^"]*\bLinux\b[^"]*)"
匹配后取第1个捕获组的结果即可。
匹配测试
用上述正则匹配你给出的两行示例文本,只会命中第一行的" dswda__12 ( Linux, 22 ) sasa ",完全符合需求。
内容的提问来源于stack exchange,提问作者Ian
相关产品推荐
相关产品推荐

