Java替换所有字符串在所有单词周围添加引号,但忽略句点

Java替换所有字符串在所有单词周围添加引号,但忽略句点,java,regex,string,Java,Regex,String,因此,我尝试引入一个字符串,并在每个单词周围添加引号,以便于格式化 String data = "JavaScript, Spring 4.0" String result = data.replaceAll("(\\w+)", "\"$1\""); result = "[" + result + "]"; System.out.println(result); 但它的返回方式如下:“JavaScript”、“Spring”4、“0” 是否要忽略此处的句点?在字符类中

因此,我尝试引入一个字符串,并在每个单词周围添加引号,以便于格式化

String data = "JavaScript, Spring 4.0"
String result = data.replaceAll("(\\w+)", "\"$1\"");
result = "[" + result + "]";             
System.out.println(result);
但它的返回方式如下:“JavaScript”、“Spring”4、“0”
是否要忽略此处的句点?

在字符类中包括

data.replaceAll("([\\w.]+)", "\"$1\"")
                  ^    ^ Make a character class
                      ^  Add period to the class

在正则表达式中,术语
\w
指的是不包含句点的任何单词字符(大写和小写字母、数字和下划线)

您可以展开表达式以包含一组字符,其中包含句点,如下所示:

[\w.]+
在上面的表达式中,方括号表示字符类。我保留了原始的
\w
以匹配任何单词字符,但还添加了句点。由于并非所有单词上都有句号,因此即使句号不存在,表达式也需要匹配。
+
运算符匹配字符类定义的集合中的一个或多个项目

在Java中转义反斜杠,代码应如下所示:

String result = data.replaceAll("([\\w.]+)", "\"$1\"");
使用
(\\S+)
代替
(\\w+)

语句:
String result=data.replaceAll(“(\\S+”,“\“$1”)

输出:
[“JavaScript”、“Spring”4.0]

语句:
String result=data.replaceAll(“\\.\124;\\,”,”).replaceAll(“(\\S+”,“\“$1”)


输出:
[“JavaScript”“Spring”“40”]

数据.replaceAll(“([\\w.]+)”,“\$1\”)您希望它返回什么?“忽略句号”是什么意思?@AndyTurner我想这应该是答案……虽然你的建议适用于原始帖子中的具体示例,但它会错误地匹配标点符号,如逗号、破折号等。此外,你的建议完全删除了句号——这是一种不希望出现的效果。它不会。这就是为什么我选择了两个选项。第二种方法是展示一种方法,如果您想要任何特定的,您可以使用|(或replaceAll中的条件)来实现。这完全取决于你的要求。第一个示例显示,如果要保留逗号、破折号等标点符号,请选择解决方案1。OP希望保留句点,如“4.0”中的句点,但不保留逗号、破折号等。这两种解决方案都无法实现。事实上,原始示例将使用第一个方法在第一组引号中包含“JavaScript”后面的逗号,并将在第二个方法中去掉句点。没有一个是OP要求的。