正则表达式匹配多行字符串开始与x,以y结尾并包含z而不是中间的x

前端之家收集整理的这篇文章主要介绍了正则表达式匹配多行字符串开始与x,以y结尾并包含z而不是中间的x前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
用一个例子更好地解释.

这是文字

<li>hello 
THE WORDS
</li>

<li> cruel </li>

<li> world THE WORDS </li>

我想找到以< li>开头的字符串并以< / li>结尾并包含单词.我希望只与< li>相匹配你好,他们的话< / li>和< li>世界的话语< / li>.

我尝试了什么:(?s)< li>.*?(THE WORDS).*?< / li>

有了这个,第二场比赛是< li>残忍的< / li> <李>世界的话语< / li>.

我正在使用Sublime Text.

解决方法

编辑:对于新的要求,使用此正则表达式:

(?s)<li>(?:(?!</li>).)*?THE WORDS.*?</li>

说明

>(?s)激活DOTALL模式,允许点跨线匹配
>< li>匹配文字字符
>(?:(?!< / li>).)断言后面的内容不是< / li并匹配一个字符
> *?量词使我们懒洋洋地匹配….
>言语
>
> *?量词使我们懒洋洋地匹配….

> literal< / li>

原始答案(不同要求):

使用这个简单的正则表达式(在Sublime中测试):

x+[^xy]*z[^xy]*y+

请参阅regex demo中的匹配项.

说明

> x匹配一个或多个x字符> [^ xy] *匹配任何既不是x也不是y的字符> z匹配我们想要的z(确保至少有一个)> [^ xy] *匹配任何既不是x也不是y的字符> y匹配一个或多个y字符

猜你在找的正则表达式相关文章