/\w+\((?R)?\)/这个正则表达式中的(?R)?是什么意思

这是一道CTF题里面的,表达式没有实际含义,就是想找出匹配的字符串,卡在这里了

(?R)是引用当前表达式的意思。

即可以用\w+\((?R)?\)替换到(?R)的位置,因此可以衍生成匹配\w+\(\w+\((?R)?\)\)、\w+\(\w+\(\w+\((?R)?\)\)\)、等等。

(?R)? 这里多一个?表示可以有引用,也可以没有。

扩展资料:

正则表达式普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。

例如,正则表达式"testing"中没有包含任何元字符,它可以匹配"testing"和"testing123"等字符串,但是不能匹配"Testing"。

构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。

正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

参考资料来源:百度百科-正则表达式

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-31
(?R)是引用当前表达式的意思,即可以用\w+\((?R)?\)替换到(?R)的位置,因此可以衍生成匹配\w+\(\w+\((?R)?\)\)、\w+\(\w+\(\w+\((?R)?\)\)\)、...
(?R)? 这里多一个?表示可以有引用,也可以没有。
因此,你的表达式可以匹配类似下面的数据:
aaa() #没有引用
aaa(bbb()) #有引用,1次
aaa(bbb(c())) #有引用,2次
a(bb(ccc(dddd(eeeee(ffffff()))))) #有引用,5次本回答被网友采纳
第2个回答  2020-06-26
chalo
相似回答