Notepad++正则匹配包含text "或choice "的行求助
问题描述
我在Notepad++中使用以下代码:
text "","text1" waitinput text "","text2" waitinput text "{user}","text3" waittext choice "option1","option2" text "","text4" waitinput text "{user}","text5" waitinput text "char","text6" waitinput
需要匹配所有包含text "或choice "的行,但之前尝试的正则表达式结果不一致,部分行被遗漏,空行上方的行无法识别。
我的尝试:
- 搜索正则:
^\s*text|^\s*choice
结果:
줄 1: text "","text1" 줄 3: text "","text2" 줄 5: text "{user}","text3" 줄 7: 줄 9: 줄 12: text "{user}","text5" 줄 14:
- 搜索正则:
^.*\b(text\s\"|choice\s\")\b.*$
结果:
줄 8: choice "option1","option2" 줄 15: text "char","text6"
所有尝试都无效,请求能完美匹配样本中目标行的正则表达式。
解决方案
直接使用这个正则表达式即可精准匹配所有目标行:
^\s*(text|choice)\s+"
失败原因分析
- 第一个正则
^\s*text|^\s*choice:分支结构优先级错误,且未限定关键字后必须紧跟",导致空行(仅含空白字符的行)被误匹配,同时部分缩进行的匹配逻辑不严谨。 - 第二个正则
^.*\b(text\s\"|choice\s\")\b.*$:错误使用HTML转义实体\"代替原生双引号",且多余的单词边界\b限制了匹配范围,导致大部分符合条件的行无法被识别。
正则说明
^\s*:匹配行首任意数量的空白字符(适配缩进的行)(text|choice):精准匹配目标关键字\s+":匹配关键字后至少一个空白字符加双引号,确保完整匹配text "或choice "模式
使用该正则后,会准确匹配样本中所有7条目标行,无遗漏也无错误匹配。
内容的提问来源于stack exchange,提问作者J. P.
相关产品推荐
相关产品推荐

