我正在使用(.*)\\1
搜索文本blabl
上的模式regexec()
。我在regmatch_t
结构中获得了成功但空的匹配。究竟有什么匹配?
答案 0 :(得分:5)
正则表达式。*可以成功匹配一串零字符,或相邻字符之间没有任何内容。
所以你的模式匹配了parens中的零个字符,然后紧接着匹配零个字符。
因此,如果你的正则表达式是/f(.*)\1/
,它将匹配'f'和第一个'o'之间的字符串“foo”。
您可以尝试使用.+
代替.*
,因为它匹配一个或多个而不是零或更多。 (使用。+你应该匹配'foo'中的'oo')
答案 1 :(得分:0)
\ 1是后来通常用于替换的反向引用,或者当尝试通过在匹配中获得匹配来进一步优化正则表达式时。你应该只使用(。*),这会给你你想要的结果,并会自动给出反向引用数字1.我不是正则表达式专家,但这些是基于我有限知识的想法。
顺便说一句,在尝试查看真正发生的事情时,我总是回到RegexBuddy。
答案 2 :(得分:0)
\ 1是“重新匹配”指令。问题是,你想立即重新匹配(例如, BLABLA )
/(.+)\1/
或更晚(例如 BLA ahem BLA )
/(.+).*\1/