一、综述:
1、知识储备:
匹配优先:尽可能多的匹配
忽略优先:尽可能少的匹配
忽略优先只需要在原本的匹配优先量词后加一个问号即可,即在:*、+、?一类后缀元字符后加入?即可
要注意的是,DFA不支持忽略优先。
2、情景描述:
最近在工作当中在使用一个正则表达式的时候遇到了一个问题,用如下正则表达式匹配一个字符串的时候,没有匹配出我想要的效果。
匹配优先正则表达式:%\{.*\}
忽略优先正则表达式:%\{.*?\}
字符串:%{hhhh},%{321666}
二、匹配优先:
在notepad++里面匹配出来的效果如下:
只匹配到了一个,通过查询发现是把%{hhhh},%{321666}整体当成了一个匹配成功的结果:
三、忽略优先:
这不是我想要的结果,我希望能把%{hhhh}和%{321666}当成两个结果匹配出来,于是此处改用了忽略优先匹配,忽略优先只需要在原本的匹配优先量词后加一个问号即可,然后此处的正则表达式变为了: