正则表达式匹配多行字符串开始与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模式,允许点跨线匹配 > literal< / li> 原始答案(不同要求): 使用这个简单的正则表达式(在Sublime中测试): x+[^xy]*z[^xy]*y+ 请参阅regex demo中的匹配项. 说明 > x匹配一个或多个x字符> [^ xy] *匹配任何既不是x也不是y的字符> z匹配我们想要的z(确保至少有一个)> [^ xy] *匹配任何既不是x也不是y的字符> y匹配一个或多个y字符 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |