![](/img/trans.png)
[英]How to split a String containing multiple groups of string into Sets of Set in Java
[英]java - Regex to split a string containing multiple groups
我需要分割這串
(2005)[1]1,2,3,4[2]1(2008)[2]2–;3,4(2009)[3]1,2,3-4(2010)[4]1,2,3-4(2011)[5]1(2012)[5]2,3-4[6]1,2\[\](2014)[6]3-4[7]1-2(2015)[7]3-4[8]1-2(2016)[10]1[8]3-4[9]1-2,3-4(2017)[10]2
如:
1, "1,2,3,4"
2, 1 2
2, 2–;3,4
對於輸入“((2005)[1] 1,2,3,4”),我需要捕獲組1中[]中的值,以及捕獲組2中其余字符串(1,2,3,4)的值,並重復執行整個字符串
我已經創建了此正則表達式字符串,但無法正常工作
\[(.*?)\](.+?)(?=\[|\(|$)
問題是,當[]之后沒有任何東西捕獲(年份)時,它不應該這樣做
模式的(.+?)(?=\\[|\\(|$)
部分匹配除換行符外的任何1個或多個字符,直到最左邊的[
, (
或字符串的末尾。您需要允許匹配零或這里還有更多字符。
但是,這里的[^\\[(]
否定字符類將更加高效和優雅:
\[(.*?)\]([^\[(]*)
請參閱此正則表達式演示 。
還是更有效率
\[([^\]\[]*)\]([^\[(]*)
參見另一個正則表達式演示 。
細節
\\[
-一個[
([^\\]\\[]*)
-組1: [
和]
以外的任何0+個字符 \\]
-一個]
([^\\[(]*)
-組2:除[
和(
以外的任何0+個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.