Java正则表达式替换
我需要在Java中使用替换函数: string.replacemyString,;Java正则表达式替换,java,Java,我需要在Java中使用替换函数: string.replacemyString,; myString值是例如javascript:r0、javascript:r23、javascript:l5等。只是数字总是不同的,并且有r或l字母。与之匹配的正则表达式是什么?谢谢以下正则表达式将与之匹配: javascript:[rl]\(\d+\) 以下正则表达式将与之匹配: javascript:[rl]\(\d+\) 修正了你想要的正则表达式是 "javascript:[rl]\\(\\d+\\)"
myString值是例如javascript:r0、javascript:r23、javascript:l5等。只是数字总是不同的,并且有r或l字母。与之匹配的正则表达式是什么?谢谢以下正则表达式将与之匹配:
javascript:[rl]\(\d+\)
以下正则表达式将与之匹配:
javascript:[rl]\(\d+\)
修正了你想要的正则表达式是
"javascript:[rl]\\(\\d+\\)"
注意:外部引号并不是正则表达式的一部分;它们是传递给Pattern.compile或直接替换的Java字符串的一部分
以下是您可以尝试的完整程序:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class PatternExample {
private static final Pattern JS_PATTERN = Pattern.compile("javascript:[rl]\\(\\d+\\)");
private static final String[] MESSAGES = {
"Good javascript:r(5)",
"Good javascript:l(50003843)",
"Good javascript:r(1123934)",
"Bad javascript:|(5)",
"Bad javascript:r(53d)",
"Bad javascript:l()",
};
public static void main(String[] args) {
for (String s : MESSAGES) {
Matcher matcher = JS_PATTERN.matcher(s);
System.out.println(matcher.replaceAll(""));
}
}
}
下面是上述程序的另一个版本,它直接对字符串调用replaceAll,而不是预编译模式:
public class PatternExample {
private static final String[] MESSAGES = {
"Good javascript:r(0)",
"Good javascript:l(50003843)",
"Good javascript:r(1123934)",
"Bad javascript:|(5)",
"Bad javascript:r(53d)",
"Bad javascript:l()",
};
public static void main(String[] args) {
for (String s : MESSAGES) {
System.out.println(s.replaceAll("javascript:[rl]\\(\\d+\\)", ""));
}
}
}
修正了你想要的正则表达式是
"javascript:[rl]\\(\\d+\\)"
注意:外部引号并不是正则表达式的一部分;它们是传递给Pattern.compile或直接替换的Java字符串的一部分
以下是您可以尝试的完整程序:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class PatternExample {
private static final Pattern JS_PATTERN = Pattern.compile("javascript:[rl]\\(\\d+\\)");
private static final String[] MESSAGES = {
"Good javascript:r(5)",
"Good javascript:l(50003843)",
"Good javascript:r(1123934)",
"Bad javascript:|(5)",
"Bad javascript:r(53d)",
"Bad javascript:l()",
};
public static void main(String[] args) {
for (String s : MESSAGES) {
Matcher matcher = JS_PATTERN.matcher(s);
System.out.println(matcher.replaceAll(""));
}
}
}
下面是上述程序的另一个版本,它直接对字符串调用replaceAll,而不是预编译模式:
public class PatternExample {
private static final String[] MESSAGES = {
"Good javascript:r(0)",
"Good javascript:l(50003843)",
"Good javascript:r(1123934)",
"Bad javascript:|(5)",
"Bad javascript:r(53d)",
"Bad javascript:l()",
};
public static void main(String[] args) {
for (String s : MESSAGES) {
System.out.println(s.replaceAll("javascript:[rl]\\(\\d+\\)", ""));
}
}
}
哎哟,关上:方括号内的|是匹配的哎哟,关上:方括号内的|是匹配的我直接将它传递给replace str=str.replacejavascript:[rl]\\d+\;但是它给了我错误Eclipse无效的转义序列有效的是\b\t\n\f\r\\\\\\\Right,@simPod,这就是我尝试编写多个正则表达式而不测试它的原因。如果它是Java字符串,反斜杠必须转义。非常抱歉。编辑。啊,谢谢。现在没有错误了。。。但它不起作用。。。我有以下代码:String str=javascript:r0;str=str.replacejavascript:[rl]\\\\d+\\;结果仍然是javascript:r0。RegExPlanet说它匹配。我不明白为什么替换函数不起作用???我在答案中添加了传统的模式/匹配器方法。。。让我也在字符串中添加直接替换方法。@simPod我添加了一个完整的程序,其中包括您的确切案例。希望你能让它工作。我直接将它传递给replace str=str.replacejavascript:[rl]\\d+\;但是它给了我错误Eclipse无效的转义序列有效的是\b\t\n\f\r\\\\\\\Right,@simPod,这就是我尝试编写多个正则表达式而不测试它的原因。如果它是Java字符串,反斜杠必须转义。非常抱歉。编辑。啊,谢谢。现在没有错误了。。。但它不起作用。。。我有以下代码:String str=javascript:r0;str=str.replacejavascript:[rl]\\\\d+\\;结果仍然是javascript:r0。RegExPlanet说它匹配。我不明白为什么替换函数不起作用???我在答案中添加了传统的模式/匹配器方法。。。让我也在字符串中添加直接替换方法。@simPod我添加了一个完整的程序,其中包括您的确切案例。希望你能让它工作。你可以自己做一些测试。你试过什么吗?是吗?是的,但我不太懂正则表达式。我尝试了一些在线工具,但没有成功。而且我对Java还是新手。现在我有了这个表达式,但正在找到如何使用它的方法:/try\bjavascript[:][rl][[0-9][0-9][]它从r/l0匹配到r/l99请随意自己做一些测试您尝试了什么吗?是吗?是的,但我不太懂正则表达式。我尝试了一些在线工具,但没有成功。而且我对Java还是新手。现在我有了这个表达式,但找到了使用它的方法:/try\bjavascript[:][rl][[0-9][0-9][]它从r/l0匹配到r/l99