用一个例子更好地解释。
这是文字:
<li>hello
THE WORDS
</li>
<li> cruel </li>
<li> world THE WORDS </li>
我想找到以<li>
和开头</li>
并包含的字符串THE WORDS
。我希望只与<li> hello THE WORDS </li>
和匹配<li> world THE WORDS </li>
。
我试过的 (?s)<li>.*?(THE WORDS).*?</li>
这样,第二场比赛是<li> cruel </li> <li> world THE WORDS </li>
。
我正在使用Sublime Text。
编辑:对于新的要求,请使用此正则表达式:
(?s)<li>(?:(?!</li>).)*?THE WORDS.*?</li>
解释
(?s)
激活DOTALL
模式,允许点跨线匹配<li>
匹配文字字符(?:(?!</li>).)
断言其后的不是,</li
并匹配一个字符*?
量词让我们懒洋洋地匹配到....THE WORDS
*?
量词让我们懒洋洋地匹配到....</li>
原始答案(不同要求):
使用以下简单的正则表达式(已在Sublime中测试):
x+[^xy]*z[^xy]*y+
在正则表达式演示中查看匹配项。
解释
x+
匹配一个或多个x
字符[^xy]*
匹配任何既不是x
也不是a的字符y
z
匹配z
我们想要的(确保至少有一个)[^xy]*
匹配任何既不是x
也不是a的字符y
y+
匹配一个或多个y
字符本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句