Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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正则表达式替换_Java - Fatal编程技术网

Java正则表达式替换

Java正则表达式替换,java,Java,我需要在Java中使用替换函数: string.replacemyString,; myString值是例如javascript:r0、javascript:r23、javascript:l5等。只是数字总是不同的,并且有r或l字母。与之匹配的正则表达式是什么?谢谢以下正则表达式将与之匹配: javascript:[rl]\(\d+\) 以下正则表达式将与之匹配: javascript:[rl]\(\d+\) 修正了你想要的正则表达式是 "javascript:[rl]\\(\\d+\\)"

我需要在Java中使用替换函数: string.replacemyString,;
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