我用这个代码:
static Pattern escaper = Pattern.compile("([^a-zA-z0-9])");
public static String escapeRE(String str) {
return escaper.matcher(str).replaceAll("\\\\$1");
}
Run Code Online (Sandbox Code Playgroud)
它工作得很漂亮,直到我不使用这个字符串:"[".我看着debuger结果是"]"没有"\\".
System.out.println(Main.escapeRE("+"));
System.out.println(Main.escapeRE(">="));
System.out.println(Main.escapeRE("]"));
System.out.println(Main.escapeRE("["));
Run Code Online (Sandbox Code Playgroud)
结果:
\\+
\\>\\=
]
[
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我有一个问题:我需要在字符串s1中找到字符串s2(或char数组)中第一个出现的符号.
是否有用于此目的的标准功能?如果没有,那么这个问题的良好实施是什么?(当然我可以为我的s2中的每个char 运行indexOf,但这似乎不是一个好的算法,因为如果只有最后一个符号出现在s1中,我们必须先经过s1 | s2 | -1次才能得到一个回答).
非常感谢你!
我有以下字符串:
String str = "{% assign foo = values %}.{{ foo[0] }}."
Run Code Online (Sandbox Code Playgroud)
我正在尝试将其编译为模式:
Pattern p = Pattern.compile(StringEscapeUtils.escapeJava(str));
Run Code Online (Sandbox Code Playgroud)
但是编译因"非法重复"错误而失败,我猜这是因为'{'char没有被转义.
我怎样才能正确逃脱它?最好不要在每个角色前添加"\\".
我正在学习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。
所以我怎么能逃脱那个方括号,并用[]{}空格 代替所有。
我是Java的新手我有一个StringBuilder从HTML文件中获取的字符串,我已经将它分成了很多步骤,现在我将它放入一个String中,让我们称之为alink
aLink是一个String包含<a href="http//www.google.com">Google</a>
我想.split(String regex)在Java中使用方法,以便我可以获得http://www.google.com并将其放入String变量中.
我的问题是,怎么做,因为我不能把"放入我的参数.
谢谢