我对正则表达式匹配有疑问。我需要在字符串中找到特定的子字符串。一些例子:
1. IF[A != B; C[0]; D] ==> IF[A != B; C[0]; D]
2. IF[A != B; IF[E < F; ...; ...]; D] ==> IF[E < F; ...; ...]
3. IF[A != B; C; D] ==> IF[A != B; C; D]
所以,我有这个规则表达式:IF\[([^\[\]]*)\]
. 它在案例 2 和 3 中工作正常,但在案例 1C[0]
中包含方括号。
我试图以这种方式更改我的正则表达式:IF\[((?!IF))\]
和 finaly IF\[(.+(?!IF))\]
。我添加了一个展望,说它“保留不包含另一个 IF 的 IF”。现在它适用于案例 1 和 3,但案例 2 返回整个字符串。
如何创建正确的外观来解决这个问题?我需要在可以是整个字符串的字符串中找到最内部的 IF。
我已经在这个答案中尝试了解决方案:https ://stackoverflow.com/a/32747960/5731129