我们说我有一个字符串
String value = $$$$;
如果有任何可能使用正则表达式来替换所有类似字符只是这个表达式
String value=\\$*
如果值是****
怎么办?我有问题,因为我正在与****进行拆分并且我收到此异常
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 3
***
答案 0 :(得分:3)
如果我理解你的问题,那么是的。您可以使用()
进行分组; ^
表示开头,.
表示匹配。像,
String value = "$$$$";
String value2 = "****";
System.out.println(value.replaceAll("^(.)+$", "$1"));
System.out.println(value2.replaceAll("^(.)+$", "$1"));
输出
$
*
我正在使用分隔符进行常规表达以提取数字,例如1 $$$ 4 %%% 5使用“1 $$$ 4 %%% 5”.split(“\ $ | \%)我期待收到1,4,5的数组
String str = "1$$$4%%%5";
Pattern p = Pattern.compile("^(\\d+)\\$+(\\d+)\\%+(\\d+)$");
Matcher m = p.matcher(str);
if (m.matches()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
输出(按要求)
1
4
5
答案 1 :(得分:1)
如果您只想分割多个符号,例如:$,%,*;尝试使用正则表达式:
[$%*]+
字符类(方括号之间)中的字符是文字匹配的,因此如果您想要将字符串拆分为更多字符,则只需将它们添加到括号内,例如:[$%&#@*]+
。 +
表示正则表达式将匹配一个或多个此类字符。
Java中的示例:
public class Test {
public static void main(String[] args) {
String abc = "1$$$4%%%5****3";
String[] array = abc.split("[$%*]+");
System.out.println(Arrays.toString(array));
}
}
带输出:
[1,4,5,3]