所以我有一個這樣的字串,
(name|address)
([name|address])
[name|address]
所以我想檢查'|' 字符并忽略它是否在我在示例中顯示的括號中。
我已經添加了這個正則運算式,但它沒有捕捉到我描述的所有場景。
\\|(?![^(]*\\))
編輯:
如果我有這樣的字串,
|Hello all, | morning [name|address] |
然后我按|字符打破字串。但是我不想|在破壞字串時考慮括號內的字符。
uj5u.com熱心網友回復:
您可以使用
import java.util.*;
import java.util.regex.*;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
String s = "|Hello all, | morning [name|address] |";
Pattern pattern = Pattern.compile("(?:\\([^()]*\\)|\\[[^\\]\\[]*]|[^|]) ");
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println(matcher.group().trim());
}
}
}
請參閱正則運算式演示和Java 演示。
詳情:
(?:- 非捕獲組的開始:\([^()]*\)|- ,除and之外的(零個或多個字符,然后是一個字符,或())\[[^\]\[]*]|- ,零個或多個除 a或char[以外的字符,然后是一個char,或[]][^|]- 除管道字符外的任何單個字符
)- 小組結束,重復一次或多次。
請注意,在 Android、Java、ICU 正則運算式風格中,兩者都[必須]在字符類中進行轉義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485680.html
