Regex 正则表达式获取所有匹配,包括较小的子匹配
我有以下输入字符串Regex 正则表达式获取所有匹配,包括较小的子匹配,regex,non-greedy,Regex,Non Greedy,我有以下输入字符串 Testing <B><I>bold italic</I></B> text. 测试粗体斜体文本。 以及以下正则表达式: <([A-Z][A-Z0-9]*)\b[^>]*>.*</\1> ]*>* 这个正则表达式只提供以下更大的匹配 <B><I>bold italic</I></B> 粗体斜体 如何使用正则表达式获得较小的匹配 <I
Testing <B><I>bold italic</I></B> text.
测试粗体斜体文本。
以及以下正则表达式:
<([A-Z][A-Z0-9]*)\b[^>]*>.*</\1>
]*>*
这个正则表达式只提供以下更大的匹配
<B><I>bold italic</I></B>
粗体斜体
如何使用正则表达式获得较小的匹配
<I>bold italic</I>
粗体斜体
我尝试使用非贪婪运算符,但也不起作用
是否可以使用java或c等匹配组或匹配集合将两者都作为匹配组获取?请尝试下面使用正向查找的正则表达式
(?<=>)<([A-Z][A-Z0-9]*)\b[^>]*>.*<\/\1>
(?)]*>*
它查找紧跟在
符号之后开始的标记
说明:
此处使用正向查找,它在(?)
符号之后设置匹配标记
捕获下一个)
符号
匹配除*
以外的任何字符零次或多次\n
匹配lietral
<([A-Z][A-Z0-9]*)\b[^<>]*>[^<]*</\1>
[^FYI,添加了演示和解释。:)谢谢,它起作用了。顺便说一句,我这样做不是为了解析HTML,我只是为了学习正则表达式。是否可以使用单个正则表达式在两个匹配中循环?在任何编程语言中都可以。是的。大多数编程语言支持lookback。在java中,您需要再次避开反斜杠因为模式被双引号包围,而不是正斜杠。我试图用c#获取所有匹配项,但它只返回了较小的一个。是否可以一个接一个地获取两个匹配项?如果你能给我看java/c#代码,那就太好了。将输入放在这个链接中并保存正则表达式。然后将链接放回这里。然后,解释你要做什么你想在输入上匹配。然后我给你看c代码。