regex 从字符串中删除逗号非数值java [已关闭]

hpcdzsge  于 2023-01-06  发布在  Java
关注(0)|答案(1)|浏览(106)

昨天关门了。
Improve this question
我需要从字符串中删除所有逗号,只有当不是数字时才是。
比如我有
1234,223
我想要
1234,223
但如果我有
你好,玛丽
我想
你好玛丽
我试着用replaceAll做这个,但是我找不到正确的正则表达式。请你建议我是否可以只用一个正则表达式?

z2acfund

z2acfund1#

试试这个正则表达式:

public static void main( String[] args ) {
      String regex = "(?<!\\d),(?!\\d)";
      String test = "Testing, testing 123,456.";
      String result = test.replaceAll( regex, "" );
      System.out.println( result );
   }

结果:

run:
Testing testing 123,456.
BUILD SUCCESSFUL (total time: 0 seconds)

说明:
(?〈!\d):负向后查找。仅当后面的字符不是数字(\d)时才匹配。
,:我们要匹配的逗号,以便替换它。
(?!\d):负向前查找。仅当逗号前面的字符不是数字(\d)时才匹配。
将所有此类匹配替换为""(无)将删除逗号。
Viktor指出,如果你有数字文本,这是行不通的。"iPhone14,三星",你不想删除这样的逗号。删除后面的负面期待将工作在这种情况下:

String regex = ",(?!\\d)";

但这取决于OP的实际要求。

相关问题