正则表达式嵌套一则

字符串

\frac{0+\frac{1}{2}+0}{1+\frac{4}{5}+1}

如何使用正则表达式分别获取两个字符串:

  1. 0+\frac{1}{2}+0

  2. 1+\frac{4}{5}+1

\frac{}{}可以无限嵌套。

也要能够匹配:

\frac{1}{2}
阅读 4.5k
2 个回答

/^\\frac{(.*\\frac{.*}{.*}.*)*}{(.*\\frac{.*}{.*}.*)*}|\\frac{(.*\\frac{.*}{.*}.*)*}{(.*)}|\\frac{(.*)}{(.*)}$/

这个勉强可以,但是需要在程序中加一点判断,看看具体是哪两个分组匹配到的。

一开始的想法是给分组里面的\\frac{...}{...}用非贪婪模式,但仍然是不行的,因为它的后面没有“贪婪”的部分来“抢夺”它,所以它的匹配结果实际上还是和贪婪一样的。实验了一下确实是这样。

后来想用逆向否定环视来实现,但可惜JS不支持,所以没办法,最后只能想到用这种“笨”办法来做了。不知道有没有大神能完美地搞定这个问题。

/\d{1}\+\\frac(\{\d{1}\}){2}\+\d{1}/g
这种的可以吗?问题是你的字符串中有 \f ,这个会被转义的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进