Php 交替中的混乱
支持在正则表达式中,如果匹配一个替换项中的一个替换项,则即使还有更多的替换项,它也会立即停止(在替换项之外的正则表达式中没有其他标记) 此模式搜索一个双字(例如,Php 交替中的混乱,php,regex,regex-alternation,Php,Regex,Regex Alternation,支持在正则表达式中,如果匹配一个替换项中的一个替换项,则即使还有更多的替换项,它也会立即停止(在替换项之外的正则表达式中没有其他标记) 此模式搜索一个双字(例如,This) \b([a-z]+)((?:\s |]+>)+)(\1\b) 如果我介绍这个主题,我有一个困惑: 这和父亲的情况相符 "<i>whatever<i> whatever" “随便什么” \b([a-z]+)匹配 (((?:]+>|\s)+)跟在一个标记后面,所以第二个备选匹配 (
This
)
\b([a-z]+)((?:\s |]+>)+)(\1\b)
如果我介绍这个主题,我有一个困惑:
这和父亲的情况相符
"<i>whatever<i> whatever"
“随便什么”
\b([a-z]+)
匹配
(((?:]+>|\s)+)
跟在一个标记后面,所以第二个备选匹配
(\1\b)
如果跟在第一个括号中反向引用的相同单词后面,则必须匹配
如果标记后面不跟在“(\1\b)
”后面,而跟在空格后面,为什么要匹配
我知道在替换中存在\s
但是,难道不认为标记匹配消耗了替换吗
为什么\s
备选方案仍然有效 表示“一个或多个(?:\s |]+>)
”。是的,第一个使用标记,但是在(\1\b)
后面可能有无限多的附加标记或空白
\b([a-z]+)((?:\s|<[^>]+>)+)(\1\b)
^
\b([a-z]+)((?:\s |]+>)+)(\1\b)
^
表示“一个或多个(?:\s |]+>)
”。是的,第一个使用标记,但是在(\1\b)
后面可能有无限多的附加标记或空白
\b([a-z]+)((?:\s|<[^>]+>)+)(\1\b)
^
\b([a-z]+)((?:\s |]+>)+)(\1\b)
^
交替由+
量词控制:
(?:\s|<[^>]+>)+
(?:\s |]+>)+
…所以它尝试多次匹配。每次,它都可以尝试两种选择:首先是\s
,如果失败,则是]+>
第一次,\s
无法匹配,但]+>
成功匹配
第二次,\s
匹配一个空格
第三次,\s
匹配另一个空格
…依此类推,直到所有空格都用完。交替由+
量词控制:
(?:\s|<[^>]+>)+
(?:\s |]+>)+
…所以它尝试多次匹配。每次,它都可以尝试两种选择:首先是\s
,如果失败,则是]+>
第一次,\s
无法匹配,但]+>
成功匹配
第二次,\s
匹配一个空格
第三次,\s
匹配另一个空格
…等等,直到所有的空间都被占用。不清楚您想做什么。我建议在开发正则表达式时使用这个工具:不清楚您想做什么。我建议在开发正则表达式时使用这个工具:谢谢你的帮助,但我不能给出2个答案。这一页告诉我你在艾伦之后几秒钟回答了,所以我把答案给了他,我投票支持了你的答案。谢谢没问题,当两个答案用不同的词表示相同时,通常都是这样。谢谢你的帮助,但我不能给出两个答案。这一页告诉我你在艾伦之后几秒钟回答了,所以我把答案给了他,我投票支持了你的答案。谢天谢地,没问题,当两个答案用不同的词表达相同的意思时,通常都是这样。