Java8中屏蔽SSN的正则表达式

Java8中屏蔽SSN的正则表达式,java,Java,在Regex.Replace处显示错误(无法解析Regex)。我正在使用Java8。请帮忙。谢谢。你想要这样的东西,用XXX-XX-代替前五位数字。我用两个捕获组稍微修改了您的正则表达式,这样前五个数字将由m.group(1)返回。您对m.group(2)感兴趣。见下文: import java.util.*; import java.util.regex.*; String input = "456-67-8901"; String pattern = "^\\d{3}[- ]?\\d{2

在Regex.Replace处显示错误(无法解析Regex)。我正在使用Java8。请帮忙。谢谢。

你想要这样的东西,用XXX-XX-代替前五位数字。我用两个捕获组稍微修改了您的正则表达式,这样前五个数字将由
m.group(1)
返回。您对
m.group(2)
感兴趣。见下文:

import java.util.*;
import java.util.regex.*;

String input = "456-67-8901";

String pattern = "^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$";
String result = Regex.Replace(input, pattern, "XXX-XX-$1");

那么标识符
Regex
是从哪里来的呢?就我而言,这也完全出自以太。请你的问题包括一个,强调完整性-有一些相关的代码没有包含在你的帖子中(我们无法判断你是否声明了
Regex
)。似乎你在尝试用Java调用C#库。很抱歉,我是新来的堆栈溢出。下一步我将处理这些事情Hank u william,它成功了。同样的代码我们如何用spark+java编写。你能帮帮我吗?@depthi不幸的是我不熟悉spark。哦,没关系,没问题
    String input = "456-67-8901";

    Pattern p = Pattern.compile("^(\\d{3}[- ]?\\d{2}[- ]?)(\\d{4})$");
    Matcher m = p.matcher(input);
    if (m.matches()) {
        System.out.println("XXX-XX-" + m.group(2));
    } else {
        // bad input
    }