簡體   English   中英

Java中的字符串模式匹配問題

[英]String pattern matching problem in Java

在我使用的程序中

line.replaceAll("(", "_");

我遇到了一個RuntimeException

 at java.util.regex.Pattern.error(Unknown Source)
 at java.util.regex.Pattern.accept(Unknown Source)
 at java.util.regex.Pattern.group0(Unknown Source)
 at java.util.regex.Pattern.sequence(Unknown Source)
 at java.util.regex.Pattern.expr(Unknown Source)
 at java.util.regex.Pattern.compile(Unknown Source)
 at java.util.regex.Pattern.<init>(Unknown Source)
 at java.util.regex.Pattern.compile(Unknown Source)
 at java.lang.String.replaceAll(Unknown Source)
 at Processing.processEarly(Processing.java:95)
 at Processing.main(Processing.java:34)

有什么緣故嗎? 我們怎能避免它?

string.replaceAll的第一個參數是正則表達式,而不僅僅是一個字符串。 左開括號是正則表達式中的特殊字符,因此您必須將其轉義:

line.replaceAll("\\(", "_");

或者,因為您要替換單個字符,所以可以像這樣使用string.replace

line.replace('(', '_');

堆棧跟蹤上方的錯誤消息(有些)有用:

線程“main”中的異常java.util.regex.PatternSyntaxException:索引1附近的未閉合組(^

(這就是我在Java 6中得到的。)它提到了“正則表達式”,“組”和括號。 如果看不到此消息,則應檢查記錄/捕獲/顯示異常的方式。 它可以為您節省一些麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM