Java replaceFirst不替换括号
其结果是Java replaceFirst不替换括号,java,string,Java,String,其结果是 import java.io.*; public class Test { public static void main(String args[]) { String Str = new String("where test = (:viztest)"); System.out.print("Return Value :" ); System.out.println(Str.replaceFirst("(:viztest)", "any(
import java.io.*;
public class Test {
public static void main(String args[]) {
String Str = new String("where test = (:viztest)");
System.out.print("Return Value :" );
System.out.println(Str.replaceFirst("(:viztest)", "any('25','324')"));
}
}
它应该在哪里测试=任何'25','324'
为什么它忽略替换括号以及如何修复它?您需要转义括号参数是正则表达式。。。定义捕获组:
$javac Test.java
$java -Xmx128M -Xms16M Test
Return Value :where test = (any('25','324'))
或
如果参数是正则表达式。。。定义捕获组:
$javac Test.java
$java -Xmx128M -Xms16M Test
Return Value :where test = (any('25','324'))
或
这很简单:replaceFirst需要一个正则表达式作为第一个参数。在正则表达式中,括号表示一个组。你需要用反斜杠来逃避他们
这很简单:replaceFirst需要一个正则表达式作为第一个参数。在正则表达式中,括号表示一个组。你需要用反斜杠来逃避他们
您可以将括号括在[]中,它也会删除这些括号:
Str.replaceFirst(Pattern.quote("(:viztest)")
您可以将括号括在[]中,它也会删除这些括号:
Str.replaceFirst(Pattern.quote("(:viztest)")
使用\\因为它是一个regex转义thatAnk you,我以前用\slash尝试过,但没有成功。引用:viztest是确保转义所有需要转义的内容的最可靠方法,保留原始字符串的同时保留原始字符串。with\\as是一个正则表达式转义。我以前用\slash尝试过,但没有成功。quote:viztest是确保所有需要转义的内容都转义的最可靠方法,同时保留原始字符串的完整性。您的第一步应该始终是,很清楚地说,用给定的替换替换匹配给定正则表达式的字符串的第一个子字符串。然后你会问自己,帕伦问题是否与正则表达式相关,看看这些……你的第一步应该始终是,很清楚地说,用给定的替换替换匹配给定正则表达式的字符串的第一个子字符串。然后你会问自己,帕伦问题是否与正则表达式有关,看看这些。。。