我如何正则表达式匹配两个字符串之间的所有内容? 两个字符串之间的东西跨越几行,也可以包含所有html字符。
例如:
<p>something</p>
<!-- OPTIONAL -->
<p class="sdf"> some text</p>
<p> some other text</p>
<!-- OPTIONAL END -->
<p>The end</p>
我想剥掉整个可选部分。但贪婪的任何角色匹配都没有做我想要的......我正在使用的模式是
<!-- OPTIONAL -->.*<!-- OPTIONAL END -->
<!-- OPTIONAL -->(.*)<!-- OPTIONAL END -->
<!-- OPTIONAL -->(.*)\s+<!-- OPTIONAL END -->
(?=<!-- OPTIONAL -->)(.*)\s+<!-- OPTIONAL END -->
如果仅给出第一部分,则所有这些标记都匹配第一个可选标记,但是对于完整的行不能很好。
以下是一个示例:http://regexr.com?352bk
由于
答案 0 :(得分:8)
要正确使用正则表达式,请在?
之后使用*
:
<!-- OPTIONAL -->(.*?)<!-- OPTIONAL END -->
这对你有帮助吗?
另外,根据您使用的编程语言,您还可以使用修饰符来使您的正则表达式点(.
)匹配换行符。对于PHP,您可以使用s
(dotall)修饰符,例如:
http://php.net/manual/en/reference.pcre.pattern.modifiers.php
答案 1 :(得分:6)
检查RegExr中的dotall复选框:)
如果没有dotall标志(s
中的/regex/s
),则点(.
)将与回车符不匹配。
答案 2 :(得分:3)
玩你的例子我想我找到了答案,请在你的代码中查看:
<!-- OPTIONAL -->[\w\W]*<!-- OPTIONAL END -->
&#13;
我希望得到这个帮助
答案 3 :(得分:2)
启用“dotall”选项以便。在正则表达式中将匹配换行符并跨多行工作。根据您的正则表达式的实现,有多种方法可以执行此操作,请查看实施手册。