交替中的混乱

| 假设在一个正则表达式中,如果匹配一个替代项中的一个替代项,即使剩下更多替代项,它也就在此处停止(替代项之外的正则表达式中没有其他标记)。 资源 搜索一个双字(例如
this this
)的模式
\\b([a-z]+)((?:\\s|<[^>]+>)+)(\\1\\b)
如果介绍这个主题,我会感到困惑: 它与样式匹配。
\"<i>whatever<i>         whatever\"
\\b([a-z]+)
比赛
((?:<[^>]+>|\\s)+)
跟随一个TAG,因此第二个替代匹配。
(\\1\\b)
如果在第一个括号中反向引用相同的单词,则必须匹配。 如果标签后面没有跟随\'
(\\1\\b)
\',则为什么要匹配空格。 我知道在交替中存在“ 7”。 但是难道不应该TAG匹配消耗交替吗? 为什么“ 7”替代仍然存在?     
已邀请:

bab

        交替由
+
量词控制:
(?:\\s|<[^>]+>)+
...因此它尝试匹配多次。每次,它都可以尝试两种选择:首先是
\\s
,如果失败,则是
<[^>]+>
。 第一次,
\\s
不匹配,但是
<[^>]+>
成功匹配ѭ15。
\\s
第二次匹配一个空格。
\\s
第三次匹配另一个空格。 ...依此类推,直到所有空间都被占用为止。     
        “ѭ9”的意思是““ 19中的一个或多个”。是的,它们中的第一个消耗了标签,但是在后面跟着“ 5”之前可能有无限数量的附加标签或空白。
\\b([a-z]+)((?:\\s|<[^>]+>)+)(\\1\\b)
                         ^
    

要回复问题请先登录注册