Java RegEx替换

sim*_*Pod 1 java

我需要使用Java中的替换功能: string.replace(myString,""); myString的值,例如javascript:r(0),javascript:r(23),javascript:l(5)等只是数始终是不同的,有rl字母.匹配它的正则表达式是什么?谢谢

rya*_*ogo 5

以下正则表达式将匹配它:

javascript:[rl]\(\d+\)
Run Code Online (Sandbox Code Playgroud)


Ray*_*oal 5

(固定)你想要的正则表达式是

"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)