Java是否有内置的方法来转义任意文本,以便它可以包含在正则表达式中?例如,如果我的用户输入"$ 5",我想在输入结束后完全匹配而不是"5".
下面是我为替换&!)(}{][^"~*?:;\+-字符串中的特殊字符而编写的正则表达式,但不知何故它无法替换[&]因为它充当正则表达式的开始和结束。我怎样才能做到这一点?
System.out.println(" &!)(}{][^\"~*?:;\\+-".replaceAll("[| |&|!|)|(|}|{|^|\"|~|*|?|:|;|\\\\|+|-]", "_"));
}
Run Code Online (Sandbox Code Playgroud)
现在的输出: _______][__________
我有以下字符串
http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF
Run Code Online (Sandbox Code Playgroud)
我想要它,所以如果用户忘记输入http://或.PDF,程序将自动纠正此问题.因此,我尝试了这段代码
if (!str.startsWith("http://")) { // correct forgetting to add 'http://'
str = "http://" + str;
}
System.out.println(str);
if (!str.endsWith("\\Q.PDF\\E")) {
str = str + "\\Q.pdf\\E";
}
Run Code Online (Sandbox Code Playgroud)
但是,即使我输入正确的字符串,http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF
输出也是如此.
http://store.aqa.org.uk/qual/newgcse/pdf/AQA-4695-W-SP.PDF\Q.pdf\E
Run Code Online (Sandbox Code Playgroud)
为什么?为什么要添加另一个 '.PDF'?
我正在学习Java,我想 使用java 将所有内容替换[] and {}为一个空格。RegExp
我尝试过的
final String data = "{a:b,c:d,e:[f,g,h]}";
System.out.println(data.replaceAll("[{}[]]", " "));
Run Code Online (Sandbox Code Playgroud)
但是越来越 java.util.regex.PatternSyntaxException: Unclosed character class near index 5 [{}[]].
^
我认为Java认为将第]5个位置作为的终点RegExp。
所以我怎么能逃脱那个方括号,并用[]{}空格 代替所有。
import java.util.regex.*;
public class Splitter {
public static void main(String[] args) throws Exception {
Pattern p = Pattern.compile("[,\\s]+");
String[] results = p.split("one,two, three four , five");
for (String result : results) {
System.out.println(result);
}
}
}
Run Code Online (Sandbox Code Playgroud)
拆分器可以是逗号或空格,也可以是任意数量的组合.我认为它的正则表达式应该是[,\s]+.为什么示例中会有额外的反斜杠?