![](/img/trans.png)
[英]java.util.regex.PatternSyntaxException: Unmatched closing ')' : during string.split operation
[英]String.split(pattern) throws exception due to { in pattern: java.util.regex.PatternSyntaxException
我在Java中有一個String。 以下是我關注的部分{3: {108:TR2011052300088}}
后來我在{3: {108:
. 出於某種原因(我一直在谷歌搜索) {
和}
是一個特殊字符,所以它必須被轉義\\}
和\\{
(顯然這不起作用 - >編譯時錯誤)。
其他人提到這是Java正則表達式中的一些錯誤。 我不確定。 我得到的例外是:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed counted closure near index 2 {3:{108: at java.util.regex.Pattern.error(Unknown Source)
長話短說,我的代碼使用{3: {108:
作為分隔符並在其上崩潰來分割字符串:
String query="{3: {108:";
String [] messageParts = message.split(query);
我知道其他方法,雖然更復雜,比如編寫我自己的解析器等。
如何進行字符串拆分而不是崩潰?
編輯:回答一些意見:
- 雙斜杠無濟於事: \\\\{
give \\{3:\\{108:MAMABEARid123}}
因為2斜杠變為1
- 使用1斜杠進行轉義將無法編譯:無效的轉義序列
逃避{
:的例子:
public static void main(String[] args) {
String s = "{3: {108:TR2011052300088}}";
String[] ss = s.split("\\{3: \\{108:");
System.out.println(ss[1]); //prints TR2011052300088}}
}
刪除大括號,然后拆分冒號:
String inp = "{3: {108:TR2011052300088}}";
System.out.println(inp.replaceAll("[\\\\{\\\\}]", "").split(":")[2])
打印'TR2011052300088'
使用[{] .....之前我曾使用Regex for Swift消息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.