[英]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.