Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式-仅当后跟字母或数字时,才在逗号后插入空格_Java_Regex - Fatal编程技术网

Java 正则表达式-仅当后跟字母或数字时,才在逗号后插入空格

Java 正则表达式-仅当后跟字母或数字时,才在逗号后插入空格,java,regex,Java,Regex,在Java中,我希望在字符串后面插入空格,但前提是逗号后面的字符后面有数字或字母。我希望使用replaceAll方法,它使用正则表达式作为参数。到目前为止,我有以下几点: String s1="428.0,chf"; s1 = s1.replaceAll(",(\\d|\\w)",", "); 这段代码成功地区分了上面的字符串和逗号后面已经有空格的字符串。我的问题是,我不知道如何编写表达式以插入空格。上面的代码将用空格替换上面显示的字符串中的c。这不是我想要的 s1在执行replaceA

在Java中,我希望在字符串后面插入空格,但前提是逗号后面的字符后面有数字或字母。我希望使用replaceAll方法,它使用正则表达式作为参数。到目前为止,我有以下几点:

String s1="428.0,chf";
s1 = s1.replaceAll(",(\\d|\\w)",", ");   
这段代码成功地区分了上面的字符串和逗号后面已经有空格的字符串。我的问题是,我不知道如何编写表达式以插入空格。上面的代码将用空格替换上面显示的字符串中的c。这不是我想要的


s1
在执行
replaceAll
“428.0 chf”
尝试此操作,请注意,
$1
表示匹配的分组:

s1.replaceAll(",(\\d|\\w)"," $1");
请注意,
String.replaceAll()
的工作方式与
Matcher.replaceAll()
的工作方式相同。发件人:

替换字符串可能包含对捕获的子序列的引用

(?=[\da-zA-Z])
是一个
正向前瞻
,它将在
之后查找一个数字或一个单词。此前瞻不会被替换,因为它从未包含在结果中。它只是一个检查

注意

\w
包括数字、字母和a
\u
。因此不需要
\d

表示它的更好方法是
[\da-zA-Z]
而不是
\w
,因为
\w
还包括不需要2个匹配项的
\u

String s1="428.0,chf";
s1 = s1.replaceAll(",([^_]\\w)"," $1"); //Match alphanumeric except '_' after ','
System.out.println(s1);
输出:-

428.0 chf
由于
\w
匹配
数字
单词、
和一个
下划线
,因此,
[^\u]
\w
中取反
下划线

$1
表示捕获的组。。您在这里捕获了
之后的
c
,因此将
c
替换为
\u$1
->
\uc
。。“u”表示一个空格。

试试这个

public class Tes {

    public static void main(String[] args){

        String s1="428.0,chf";

        String[] sArr = s1.split(",");

        String finalStr = new String();

        for(String s : sArr){

            finalStr = finalStr +" "+ s;
        }

        System.out.println(finalStr);

    }

}

我不认为这正是他想要的。注意comma@BrianAgnew.. 谢谢:)。。实际上OP的内容和标题不匹配。。所以我第一次就弄错了。已编辑代码。
\w
包括一个
\d
。无需
\d
。请注意
\u
though@Anirudha.. 编辑。。谢谢:)@KumarVivekMitra。。这不会检查下一个字符是字母还是数字。。
public class Tes {

    public static void main(String[] args){

        String s1="428.0,chf";

        String[] sArr = s1.split(",");

        String finalStr = new String();

        for(String s : sArr){

            finalStr = finalStr +" "+ s;
        }

        System.out.println(finalStr);

    }

}