在Javascript中使用正则expression式进行recursion匹配
示例string: $${a},{s$${d}$$}$$
我想先匹配$${d}$$
并将其replace为一些文本,以使string变为$${a},{sd}$$
,然后$${a},{sd}$$
将匹配。
令人烦恼的是,Javascript不提供PCRErecursion参数(?R)
,所以处理嵌套问题并不容易。 可以这样做。
我不会复制代码,但是如果您查看Steve Levithan的博客 ,他有一些关于这个主题的好文章。 他应该这样做,他可能是JS的RegExp的主要权威。 他写了XRegExp ,它取代了大部分丢失的PCRE位,甚至还有一个Match Recursive插件!
既然你想recursion地做这个,你可能最好使用一个循环来完成多个匹配。
正则expression式本身并不适合recursion – 任何东西。
一般来说,正则expression式并不适合这类问题。 最好使用状态机。
我自己写这个:
String.prototype.replacerec = function (pattern, what) { var newstr = this.replace(pattern, what); if (newstr == this) return newstr; return newstr.replace(pattern, what); };
用法:
"My text".replacerec(/pattern/g,"what");