好的,我正在处理一个项目,需要用到一个正则表达式来匹配一个*后面跟着1-4个空格或制表符,然后再跟一行文本。目前为止,我在测试目的下使用.* 来匹配lookbehind之后的内容。但是我只能显式地匹配1、2或4个空格/制表符,而不能匹配1-4个。我正在针对以下块进行测试
* test line here
* Second test
* Third test
* Another test
以下是我正在测试的两种模式(?<=(\*[ \t]{3})).*
,它按预期工作并匹配第二行,如果我用1、2或4替换3,结果相同。然而,如果我将其替换为1,4形成以下模式(?<=(\*[ \t]{1,4})).*
,它就不再匹配任何行了,我实在不明白为什么。我已经试过搜索但没有成功。我正在使用全局标志 g。
.*
会很好地匹配空格。 - Tim Pietzcker.*
只是OP认为奇怪行为的简化示例 - 有趣的部分是向后查找。 - Kobi{1,4}
并没有抱怨(它对无限量词有些犹豫,但对于这个有限量词却没有)。 - Tim Pietzcker.*
只是简化了代码,因为我需要帮助的是回顾组。 - Hultner{1,4}
可以扩展为合法的替代,但PHP不这样做(当然更好,否则可能会创建一个畸形)。我在http://www.pagecolumn.com/tool/pregtest.htm上检查我的PHP模式,有时也在ideone上检查,我猜它们更接近真实情况 :) - Kobi