就像問題所說的那樣,是否可以使用單個正則運算式字串來獲取不在某些引號之間的分隔符?
例如,我想用分隔符分割這個字串&:
"example=3&testing='f&tmp'"
應該產生
["example=3", "testing='f&tmp'"]
本質上,單引號 ( ' ') 內的內容應該保持不變。
我發現了如何用運算式在引號內獲取事物: (?:'.*?')
我最接近切實可行的解決方案是: (.[^']&[^'])
uj5u.com熱心網友回復:
對于 a 來說String#split,這不是一件容易的事,但Matcher#find如果您使用,這是一項非常可行的任務
[^&\s=] =(?:'[^']*'|[^\s&]*)
(請參閱此正則運算式演示)和此 Java 代碼:
String text = "example=3&testing='f&tmp'";
Pattern p = Pattern.compile("[^&\\s=] =(?:'[^']*'|[^\\s&]*)");
Matcher m = p.matcher(text);
List<String> res = new ArrayList<>();
while(m.find()) {
res.add(m.group());
}
System.out.println(res);
// => [example=3, testing='f&tmp']
細節
[^&\s=]- 除了&,=和空格之外的一個或多個字符=- 一個=字符(?:'[^']*'|[^\s&]*)- 一個非捕獲組匹配'0 或多個字符',然后是 a'或零個或多個字符,而不是空格和&。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355945.html
標籤:正则表达式
