我使用以下代码在 JAVA 中提取字符串: 输入为 (000) 000-0000111,输出应为 (000) 000-0000
String text = "(000) 000-0000111";
String pattern2 = "[(][0-9][0-9][0-9][)]\\s[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]";
Pattern pattern_22 = Pattern.compile(pattern2);
Matcher matcher_22 = pattern.matcher(text);
if(matcher_22.find()) {
return matcher_22.group(0);
}
else
return "NONE";
输出为“NONE”,应该是(000) 000-0000。我哪里错了。可以麻烦有人指点一下吗。 TIA。
最佳答案
来自您的评论:
No my goal is : if input is (xxx) xxx-xxxxyyy then output should be (xxx) xxx-xxxx x= any integer
如果您想替换最后三位数字,可以使用:
phone = phone.replaceAll("\\d{3}$", "");
<小时/>
I don't want to replace it i want to extract it. There is a huge difference !
在这种情况下,很好的工具是 Pattern with Matcher,您的正则表达式可以是 \(\d{3}\)\s\d{3}-\d{4}
:
String text = "(000) 000-0000111";
String regex = "\\(\\d{3}\\)\\s\\d{3}-\\d{4}";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
return matcher.group();
} else {
return "NONE";
}
关于java - 使用正则表达式在 Java 中提取子字符串。如何包含空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51113677/