好的,我从正则表达式食谱中得到了这个例子
^(?=.{3}$).*
上面的正则表达式用于限制任意模式的长度
如果我再次测试'aaabbb',它会完全失败
据我了解,它会查找长度为任何字符 3 的任何字符。所以它应该匹配 'bbb' 但它不是
还有一个问题,应该遵循这种模式 x(?=x)
好的,我从正则表达式食谱中得到了这个例子
^(?=.{3}$).*
上面的正则表达式用于限制任意模式的长度
如果我再次测试'aaabbb',它会完全失败
据我了解,它会查找长度为任何字符 3 的任何字符。所以它应该匹配 'bbb' 但它不是
还有一个问题,应该遵循这种模式 x(?=x)
这实际上是一个前瞻断言而不是一个后瞻断言。^ 将匹配锚定在字符串的开头,然后它断言字符串的开头必须后跟 3 个字符,然后是字符串的结尾。
编辑:我可能应该提到最后的 .* 用于匹配这三个字符,因为前瞻断言不消耗任何字符。
据我了解,它会查找长度为任何字符 3 的任何字符。所以它应该匹配 'bbb' 但它不是
没有!让我们仔细看看...
^ # The caret is an anchor which denotes "STARTS WITH"
(?= # lookahead
. # wildcard match; the . matches any non-new-line character
{3} # quantifier; exactly 3 times
$ # dollar sign; I'm not sure if it will act as an anchor but if it did it would mean "THE END"
) # end of lookbehind
. # wildcard match; the . matches any non-new-line character
* # quantifier; any number of times, including 0 times
几个问题:
.*
字符串中的第一个字符,然后您尝试在它们后面查找夹在开头^
和第一个字符之间的字符.*
。.{3}
实际上是指任何三个字符,而不是任何重复三次的字符;)您实际上想知道如何使用 Perl 正则表达式找到重复的字母?