我需要使用Java中的替换功能:
string.replace(myString,"");
myString的值,例如javascript:r(0),javascript:r(23),javascript:l(5)等只是数始终是不同的,有r或l字母.匹配它的正则表达式是什么?谢谢
(固定)你想要的正则表达式是
"javascript:[rl]\\(\\d+\\)"
Run Code Online (Sandbox Code Playgroud)
注意:外部引号实际上不是正则表达式的一部分; 它们是您传递给Pattern.compile或直接传递给Java字符串的一部分replace.
这是一个完整的程序,您可以尝试:
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(""));
}
}
}
Run Code Online (Sandbox Code Playgroud)
以下是上述程序的另一个版本,它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+\\)", ""));
}
}
}
Run Code Online (Sandbox Code Playgroud)