Java 在一行中匹配多个模式
有人能告诉我为什么我的模式:Java 在一行中匹配多个模式,java,regex,Java,Regex,有人能告诉我为什么我的模式:(.[^]*)?不能正常工作。示例匹配: 这是一个测试,任何东西都可以放在这里,即使是其他标签 这是一项测试 如果以上都在一条线上,它应该会找到3种不同的模式。下面的链接展示了它的真实行为,这是非常奇怪的 当它找到时,它找到的匹配项应始终立即开始尝试以下操作: <p.*?>.*?</p> * 请阅读本页上关于贪婪和不情愿的内容:“。问题出在(.[^]*)?,意思是: 一个字符 后跟任意字符n次,但不是 我猜你想说的不是n次字符串,但
(.[^]*)?
不能正常工作。示例匹配:
这是一个测试,任何东西都可以放在这里,即使是其他标签
这是一项测试
时,它找到的匹配项应始终立即开始尝试以下操作:
<p.*?>.*?</p>
*
请阅读本页上关于贪婪和不情愿的内容:“。问题出在(.[^]*)?
,意思是:
- 一个字符
- 后跟任意字符n次,但不是
我猜你想说的不是n次
字符串,但这不是实现它的方法
尝试使用*?
代替:*?
*
表示匹配最长的字符串,*?
表示匹配最短的字符串
例如,对于字符串#foo#bar#
,*
将匹配#foo#bar#
,而*?
将匹配#foo#
您的正则表达式有几个问题。让我们看看它们是什么样子
这是您的正则表达式:-
<p(\s+(.*)?)?>(.[^</p>]*)?</p>
或者,您甚至可以将正则表达式简化为:-
<p[^>]*>((?!</p>).)*</p>
]*>((?!))*
您想要这个吗-
<p[^>]*>((?!</p>).)*</p>