我需要用正則運算式決議正則運算式。我有一個正則運算式字串:
[a-z]{1}[-][0-9]{4}[-][ab]
用于決議上面我想出的幾乎有效的字串的實際正則運算式是:
/(?|\[(.*?)\]\{(.*?)\}|\[(.*?)\](.*?))/g
在這個 regex101示例中可以看到它的作用,這里的錯誤出現在第2 場比賽及其第 1 組(-][0-9,應該只是-)。
目標是匹配方括號內的所有內容,[]后跟大括號內的數字{}。如果缺少方括號{}后的大括號,[]它應該用null填充它,這就是替代組對分支重置組所做的事情。此外,如果只是方括號后跟方括號,那么它也應該在后面起作用(匹配方括號內部的內容[]并用null填充第 2 組)。
我的正則運算式不會在第三次停止[-]并匹配它-][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
我錯過了什么?
uj5u.com熱心網友回復:
這個正則運算式應該可以作業:
\[([^]]*)](\{\d \}|)
演示
解釋:
\[- 火柴[([^]]*)- 匹配 0 次出現的任何不是 a 的字符,]并在組 1 中捕獲此子匹配項]- 火柴](\{\d \}|)- 要么不匹配,要么 a{后跟 1 數字后跟}. 匹配的任何內容都存盤在組 2 中
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/394521.html
下一篇:將指定位更改為0
