从本质上讲,这就是我想要做的事情:
if ($expression =~ /^\d{num}\w{num}$/)
{
#doSomething
}
Run Code Online (Sandbox Code Playgroud)
where num不是标识符,但可以表示任何大于0的整数(\d并且\w是任意选择的).我想匹配一个字符串,如果它包含两组相关字符,一组紧接着另一组,并且每组中的字符数相同.
在这个例子中,123abc并021202abcdef会匹配,但43abc不会,亦不会12ab3c或1234acbcde.
不要认为字符串从左到右增长,而是从外部增长:
xy
x(xy)y
xx(xy)yy
Run Code Online (Sandbox Code Playgroud)
你的正则表达式将是这样的:
/^(x(?1)?y)$/
Run Code Online (Sandbox Code Playgroud)
哪(?1)一个是对外括号的引用.?使它成为可选的,以便为递归匹配提供各种"基本情况".这可能是正则表达式如何用于匹配无上下文语法的最简单的例子-尽管使用解析器生成器或解析器组合器库通常更容易.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |