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