正则表达式替换等于其他正则表达式的字符

时间:2015-08-22 18:46:10

标签: java regex string

我们说我有一个字符串

String value = $$$$;

如果有任何可能使用正则表达式来替换所有类似字符只是这个表达式

String value=\\$* 

如果值是****

怎么办?

我有问题,因为我正在与****进行拆分并且我收到此异常

java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 3

***

2 个答案:

答案 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)

如果您只想分割多个符号,例如:$,%,*;尝试使用正则表达式:

[$%*]+

here

字符类(方括号之间)中的字符是文字​​匹配的,因此如果您想要将字符串拆分为更多字符,则只需将它们添加到括号内,例如:[$%&#@*]++表示正则表达式将匹配一个或多个此类字符。

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]

相关问题