加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:50:49 所属栏目:百科 来源:网络整理
导读:用一个例子更好地解释. 这是文字: lihello THE WORDS/lili cruel /lili world THE WORDS /li 我想找到以 li开头的字符串并以 / li结尾并包含单词.我希望只与 li相匹配你好,他们的话 / li和 li世界的话语 / li. 我尝试了什么:(?s) li.*?(THE WORDS).*? /
用一个例子更好地解释.

这是文字:

<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字符

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读