用于解析正则表达式字符串的正则表达式
A regex to parse regex string
我需要用正则表达式解析正则表达式。我有一个正则表达式字符串:
[a-z]{1}[-][0-9]{4}[-][ab]
我想出的解析上述字符串的实际正则表达式几乎有效是:
/(?|\[(.*?)\]\{(.*?)\}|\[(.*?)\](.*?))/g
可以在这个 regex101 example 中看到它的作用,这里的错误在 Match 2 及其 Group 1(-][0-9
,应该只是 -
)。
目标是匹配方括号 []
内的所有内容,后跟大括号 {}
内的数字。如果方括号 []
之后的大括号 {}
丢失,则应该用 null 填充它,这就是替代组对分支重置组所做的。此外,如果只是方括号后跟一个方括号,那么它也应该在以后起作用(匹配方括号 []
内部的内容并用 Group 2 填充 null).
我的正则表达式不会在第三个 [-]
处停止并将其匹配到 -][0-9
而不是仅匹配 -
然后从解析 [0-9]{4}
开始的问题。
预期匹配应该是:
[a-z]{1}
a-z
1
[-]
-
null
[0-9]{4}
0-9
4
[-]
-
null
[ab]
ab
null
当前匹配不正确,如下:
[a-z]{1}
a-z
1
[-][0-9]{4}
-][0-9
4
[-]
-
null
[ab]
ab
null
我错过了什么?
这个正则表达式应该可以工作:
\[([^]]*)](\{\d+\}|)
解释:
\[
- 匹配 [
([^]]*)
- 匹配出现次数超过 0 次的任何非 ]
字符,并在第 1 组 中捕获此子匹配项
]
- 匹配 ]
(\{\d+\}|)
- 要么不匹配任何内容,要么 {
后跟 1+ 位数字后跟 }
。匹配的内容存储在第 2 组
我需要用正则表达式解析正则表达式。我有一个正则表达式字符串:
[a-z]{1}[-][0-9]{4}[-][ab]
我想出的解析上述字符串的实际正则表达式几乎有效是:
/(?|\[(.*?)\]\{(.*?)\}|\[(.*?)\](.*?))/g
可以在这个 regex101 example 中看到它的作用,这里的错误在 Match 2 及其 Group 1(-][0-9
,应该只是 -
)。
目标是匹配方括号 []
内的所有内容,后跟大括号 {}
内的数字。如果方括号 []
之后的大括号 {}
丢失,则应该用 null 填充它,这就是替代组对分支重置组所做的。此外,如果只是方括号后跟一个方括号,那么它也应该在以后起作用(匹配方括号 []
内部的内容并用 Group 2 填充 null).
我的正则表达式不会在第三个 [-]
处停止并将其匹配到 -][0-9
而不是仅匹配 -
然后从解析 [0-9]{4}
开始的问题。
预期匹配应该是:
[a-z]{1}
a-z
1
[-]
-
null
[0-9]{4}
0-9
4
[-]
-
null
[ab]
ab
null
当前匹配不正确,如下:
[a-z]{1}
a-z
1
[-][0-9]{4}
-][0-9
4
[-]
-
null
[ab]
ab
null
我错过了什么?
这个正则表达式应该可以工作:
\[([^]]*)](\{\d+\}|)
解释:
\[
- 匹配[
([^]]*)
- 匹配出现次数超过 0 次的任何非]
字符,并在第 1 组 中捕获此子匹配项
]
- 匹配]
(\{\d+\}|)
- 要么不匹配任何内容,要么{
后跟 1+ 位数字后跟}
。匹配的内容存储在第 2 组