這是我的簡化正則運算式:
abc\[(. ?)\]
我想像這樣匹配:
?text[.ev.wa.vew.av.ewa]=>.ev.wa.vew.av.ewa?text[hello$(abc)elv]=>hello$(abc)elv?text[just test[test]]=>just test[test]?text[test 2[test]here something]=>test 2[test]here something
所以,
- 我想匹配
?text[ - 然后將方括號之間的所有內容捕獲到第 1 組
- 然后匹配之后的所有內容。
uj5u.com熱心網友回復:
您可以使用
\?text(?:\[([^\]\[]*)]|\(([^()]*)\)).
請參閱正則運算式演示。結果在第 1 組或第 2 組中(您需要檢查代碼)。
細節
\?text- 一段?text文字(?:\[([^\]\[]*)]|\(([^()]*)\))- 兩種選擇之一:`\[([^\]\[]*)-[,零個或多個字符,除了[然后]是一個]字符|- 或者\(([^()]*)\)-(,零個或多個字符,除了(然后)是一個)字符
.- 盡可能多的除換行符以外的一個或多個字符。
現在,如果您需要支持嵌套括號,則需要遞回支持,但 Java 正則運算式不提供這樣的選項。因此,唯一的正則運算式方法是硬編碼嵌套級別支持。這是一個嵌套級別的示例:
\?text(?:\[([^\]\[]*(?:\[[^\]\[]*][^\]\[]*)*)]|\(([^()]*(?:\([^()]*\)[^()]*)*)\)).
請參閱正則運算式演示。您可以添加更多級別。
uj5u.com熱心網友回復:
閱讀下面的評論后,試試這個:abc\(([^)] \)\([^)] \))
https://regex101.com/r/lC8UJb/2
使用否定字符類 like[^)] 會更安全一些,.*?因為它更準確地符合通常的要求。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496179.html
