java - 使用正则表达式在 Java 中提取子字符串。如何包含空格字符

标签 java regex

我使用以下代码在 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}$", "");

regex demo

<小时/>

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/

相关文章:

java - 将 .JAR 和动态加载资源打包到一个 .EXE 中

java - Java 和多 SQL RDBMS 之间的年度计算差异

java - 如何让 TimeToLive 在 JmsTemplate 上工作?

java - 调试 `Widget is disposed`异常

html - 提取所有 html 图像标签,Rails

javascript - 匹配至少四分之三的正则表达式要求的最佳方法

java - 起始索引已知时 Substring 与 RegEx 的性能比较

java - 如何使用Jedis获取redis服务器的系统时间?

regex - 如何查找时间值(类似 # :##) in a string

java - 如何创建正则表达式来替换已知字符串,同时保持可选参数不变?