我不擅长正则表达式,我尝试将java.lang.String
replaceAll()
方法用于代码段,如下所示
A是:
public class method3 {
public static int addTwoNumbers(int one, int two){
return one+two;
}
public static void main (String[] args){
int total = addTwoNumbers(1, 3);
System.out.println(total);
}
}
替换为B
null
public class method3 {
/* some writting */
public static int addTwoNumbers(int one, int two){
return one+two;
}
/*more text*/
public static void main (String[] args){
int total = addTwoNumbers(1, 3);
System.out.println(total);
}//end of
}
这给了我以下错误
java.util.regex.PatternSyntaxException: Illegal repetition
我猜这与/**/
字符有关吗?
你如何对此进行排序,是否还需要注意其他任何角色?
编辑:这是错误消息
Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Illegal repetition near index 25
null
public class method2 {
public static int addTwoNumbers(int one, int two){
return one+two;
}
public static void main (String[] args){
int total = addTwoNumbers(1, 3);
System.out.println(total);
}
}
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.closure(Pattern.java:3104)
at java.util.regex.Pattern.sequence(Pattern.java:2101)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
....
调用replaceAll()
String a = readFile(directoryToAddFile,startOfCode, endOfCode);
String b = textarea.getText().toString();
String content = IOUtils.toString(new FileInputStream(directoryToAddFile));
content = content.replaceAll(a, b);
IOUtils.write(content, new FileOutputStream(directoryToAddFile));
答案 0 :(得分:10)
目前,您的代码尝试将“替换”字符串分析为正则表达式。
要逐字替换字符串而不是正则表达式,可以使用Pattern#quote(String)。
content = content.replaceAll(Pattern.quote(a), b);
另外,作为旁注,在这种情况下,您可能会发现String#replace(CharSequence, CharSequence)比replaceAll更合适。
答案 1 :(得分:0)
你的问题可能源于你没有逃避你想要替换的几个角色,以及你试图用它取代它的东西。正则表达式可能不是您想在此处使用的工具。来自www.regular-expressions.info,要注意的字符是[] \ ^ $。|?* +()
在该网站上阅读,了解正则表达式的用法/限制。