java - 我的正则表达式在预期之前匹配
问题描述
我知道使用正则表达式解析 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 a great sentence this is
应该有效,不需要.*
. 之后 what 允许字符串的.*
其余部分是任何内容 until is
。
编辑:我刚刚阅读了您的评论,发现单词之间可能存在空格。在这种情况下,@WiktorStribiżew 是对的,\W*
在每个单词之间使用以适应单词之间任意数量的非单词字符。(再次感谢@WiktorStribiżew)
正如@Jonathan Buelow 指出的那样,如果只是单词之间的空格,您可以使用\s+
or\s*
代替:
what\s+a\s+great\s+sentence\s+this\s+is
推荐阅读
- ruby-on-rails - Rails 祖先 gem + 渲染并以新形式选择类别/子类别
- java - 从 java 程序内部运行一个 docker 容器
- powershell - 防止在批处理文件中解释多行命令
- python - 你如何调用列表中的位置,它是一个字符串?
- c# - 如何处理特定的 IOException?
- git - 如何在不调用 Github API 的情况下获取 GitBash 中特定分支的现有 Pull Request ID 和 Url?
- blender - Solidworks 中拓扑的高级控制
- saml-2.0 - 如何将硬编码的 SAML2 响应发送到 AuthServices/Acs 端点以进行测试
- github - 如何链接到markdown文件(目录)中包含点(。)或逗号(,)的标题?
- javascript - Html - span 标签中的文本不是内联的?