【发布时间】:2019-01-14 23:40:36
【问题描述】:
我知道使用正则表达式解析 html 是不受欢迎的,但这是我想首先尝试的解决方案。
我正在尝试匹配
what a great sentence this is
以及这些单词之间的任何字符或间距
在以下字符串中:
<p>
what is going on with you?
</p>
<p>
what a great
</p>
<p>
sentence this is
</p>
<p>
How is your family?
</p>
我使用的正则表达式是:
what.*a.*great.*sentence.*this.*?is
我知道 .*?在'is'阻止我的正则表达式匹配最终p标签中的'How is'之前。但我不知道在开头附近放什么来阻止比赛从第一个 p 标签中的“正在发生的事情”开始
我正在查看来自 https://regex101.com/r/kZWYR7/1 的输出,以确认它没有按预期工作。
请帮忙,我觉得正则表达式缺少一个重要的教训,这使我无法弄清楚这一点。
预期的匹配是:
what a great
</p>
<p>
sentence this is
编辑:澄清我的问题以及它与重复的问题有何不同
【问题讨论】:
-
试试
what\W*a\W*great\W*sentence\W*this\W*is。你期望单词之间有什么样的字符?\W是任何非单词字符(包括空格)。如果您只想允许空格,请使用\s而不是\W。 -
这是什么原因,你在说话之间使用了
.*? -
您可以使用正则表达式匹配
what a great sentence this iswhat a great sentence this is -
Stack overflow when trying to use regex in java 的可能重复项。 注意: 答案也涵盖此处发布的问题。
-
在这种情况下试试这个:
what[^.?]*?a[^.?]*?great[^.?]*?sentence[^.?]*?this[^.?]*?is
标签: java regex string regex-greedy non-greedy