【发布时间】:2016-09-19 16:16:28
【问题描述】:
我用/<?=>|[^\s\w]|\w+/g来匹配
- =>
- 单词/字母
但我也想匹配K(a,...),其中a 可以是任何单词/字母,... 也可以是在这个最终正则表达式中匹配的任何内容。所以它实际上必须是递归的。
所以新的正则表达式应该匹配
- =>
- 单词/字母
- K(a,...)
... 匹配的位置
- =>
- 单词/字母
- K(a,...)
等等……
我不确定这是否可能。
我不确定创建一个递归遍历字符串中每个字符的函数是否更容易,类似于https://en.wikipedia.org/wiki/Recursive_descent_parser
【问题讨论】:
-
Javascript 正则表达式不支持递归模式,最好按照您的建议编写解析器。
-
你可以尝试使用xregexp.com库。
-
@Karpak 为什么 xregexp 会有帮助?
-
这是 RegExp 扩展库。该库中的函数 XRegExp.matchRecursive 有助于进行递归正则表达式匹配。
-
@Jamgreen。请提供一些示例,其中至少包含 3 级递归示例字符串以及您想要的输出。 JS 不直接支持递归正则表达式,但是可以使用其他库来完成。如果您提供示例,那么只有 SO 应该能够为您提供建议。
标签: javascript regex recursion