我在正則運算式中有一個例外。有了這個正則運算式
https://regex101.com/r/pxTfci/1
我可以匹配由 . 分隔的字串中的所有資料(鍵:值), 。問題我與某些格式類似的串列發生沖突
我的串列:[data1, data2, data3]
有了這個正則運算式(?<=(?<!: *)\[).*?(?=, )|(?<=, (?=[^ \r\n]))(?:.*?(?=, )|[^\r\n\[\]] ?(?=\])|[^\r\n] \](?= *\]))
我有3場比賽
match 1 = Mylist:[data1
match 2 = data2
match 3 = data3]
我搜索這個例外,當我有時,[ ]在輸出中有Mylist:[data1, data2, data3]
我不知道這是否可能。這是一個完整輸入格式的例子
MyString=[XXXXXX:XX XX XX XX, XXXXX:332.83, XXXXX:XXX-XX-XX XX:XX:XX, XXXX:0.0, XXXX:2, XXXX:0, XXXX:-256, XXXX:5, XXXX:136935, XXXX:0, XXXX:XX XXX XXX, XXXX:0.5, XXXXX:true, XXXX:0.509375, XXX:0.0, 2022-09-17,XXXXX:1, list1:[2000-00-00 00:00, 2022-11-16 15:29, 2022-11-16 15:29], list2:[2000-00-00 00:00, 2022-11-16 15:29, 2022-11-16 15:29], ]
我搜索有
match 1 = XXXXXX:XX XX XX XX
match 2 = XXXXX:332.83
...
match x =2022-09-17,XXXXX:1
match y =list1:[2000-00-00 00:00, 2022-11-16 15:29, 2022-11-16 15:29]
match z =list2:[2000-00-00 00:00, 2022-11-16 15:29, 2022-11-16 15:29]
uj5u.com熱心網友回復:
你有兩個選擇:
首先嘗試這樣的事情:
List<String> listString = [];
String MyString =
"[XXXXXX:XX XX XX XX, XXXXX:332.83, XXXXX:XXX-XX-XX XX:XX:XX, XXXX:0.0, XXXX:2, XXXX:0, XXXX:-256, XXXX:5, XXXX:136935, XXXX:0, XXXX:XX XXX XXX, XXXX:0.5, XXXXX:true, XXXX:0.509375, XXX:0.0, 2022-09-17,XXXXX:1, list1:[2000-00-00 00:00, 2022-11-16 15:29, 2022-11-16 15:29], list2:[2000-00-00 00:00, 2022-11-16 15:29, 2022-11-16 15:29], ]";
String newString = MyString.substring(1, MyString.length - 1);
bool save = true;
int start = 0;
for (int i = 0; i < newString.length; i ) {
if (newString[i] == "," && save) {
listeString.add(newString.substring(start, i));
start = i 1;
} else if (newString[i] == "[") {
save = false;
} else if (newString[i] == "]") {
save = true;
}
}
或者
創建字串時,您將串列中的“,”替換為可以輕松更改的特殊字符。
祝你有美好的一天
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/535420.html
標籤:正则表达式扑
