Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java replaceFirst不替换括号_Java_String - Fatal编程技术网

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是确保所有需要转义的内容都转义的最可靠方法,同时保留原始字符串的完整性。您的第一步应该始终是,很清楚地说,用给定的替换替换匹配给定正则表达式的字符串的第一个子字符串。然后你会问自己,帕伦问题是否与正则表达式相关,看看这些……你的第一步应该始终是,很清楚地说,用给定的替换替换匹配给定正则表达式的字符串的第一个子字符串。然后你会问自己,帕伦问题是否与正则表达式有关,看看这些。。。