正则表达式在坐标数据上出现故障
Regex is malfunctioning on the coordinates data
我有一个正则表达式,它应该删除字符串中除 space 之外的所有非数字字符。
输入看起来像这样:
{“23 882 91 317”, “55 672 871 437”, “230 12 435 907”, “320 32 855 107”}
输出应如下所示:
23 882 91 317 55 672 871 437 230 12 435 907 320 32 855 107
相反,我看到了输出:
23 882 91 317 5 672 871 437 30 12 435 907 20 32 855 107
它正在删除 , "
之后的数字字符,并且
我剩下 :
5 instead of 55
30 instead of 230
20 instead of 320
我不是正则表达式方面的专家,所以想看看是否有人可以指出代码中的错误。以下是正则表达式现在的样子。
String processedString = s.replaceAll("[^a-zA-Z0-9\s].", "");
您的正则表达式 [^a-zA-Z0-9\s].
需要恰好匹配两个字符才能进行替换。第一个字符是非字母数字非 space 字符,因此在您的字符串中它们是
{“23 882 91 317”, “55 672 871 437”, “230 12 435 907”, “320 32 855 107”}
^ ^ ^ and so on
正则表达式中的下一个字符是 .
,它将匹配任何字符。因此,您的正则表达式成对删除字符,其中第一个字符是您想要的字符,但第二个字符有时幸运地与您要删除的字符匹配,但有时 .
不幸匹配一个数字,因此它删除数字。请参阅此演示以了解您的正则表达式匹配的内容。
您应该将 .
更改为 +
以使其删除一个或多个字符并使用此正则表达式,
[^a-zA-Z0-9\s]+
Correctly replacing only unwanted characters demo
您的 Java 代码,
String s = "{“23 882 91 317”, “55 672 871 437”, “230 12 435 907”, “320 32 855 107”}";
String processedString = s.replaceAll("[^a-zA-Z0-9\s]+", "");
System.out.println(processedString);
打印以下内容而不删除任何数字,
23 882 91 317 55 672 871 437 230 12 435 907 320 32 855 107
我有一个正则表达式,它应该删除字符串中除 space 之外的所有非数字字符。
输入看起来像这样:
{“23 882 91 317”, “55 672 871 437”, “230 12 435 907”, “320 32 855 107”}
输出应如下所示:
23 882 91 317 55 672 871 437 230 12 435 907 320 32 855 107
相反,我看到了输出:
23 882 91 317 5 672 871 437 30 12 435 907 20 32 855 107
它正在删除 , "
之后的数字字符,并且
我剩下 :
5 instead of 55
30 instead of 230
20 instead of 320
我不是正则表达式方面的专家,所以想看看是否有人可以指出代码中的错误。以下是正则表达式现在的样子。
String processedString = s.replaceAll("[^a-zA-Z0-9\s].", "");
您的正则表达式 [^a-zA-Z0-9\s].
需要恰好匹配两个字符才能进行替换。第一个字符是非字母数字非 space 字符,因此在您的字符串中它们是
{“23 882 91 317”, “55 672 871 437”, “230 12 435 907”, “320 32 855 107”}
^ ^ ^ and so on
正则表达式中的下一个字符是 .
,它将匹配任何字符。因此,您的正则表达式成对删除字符,其中第一个字符是您想要的字符,但第二个字符有时幸运地与您要删除的字符匹配,但有时 .
不幸匹配一个数字,因此它删除数字。请参阅此演示以了解您的正则表达式匹配的内容。
您应该将 .
更改为 +
以使其删除一个或多个字符并使用此正则表达式,
[^a-zA-Z0-9\s]+
Correctly replacing only unwanted characters demo
您的 Java 代码,
String s = "{“23 882 91 317”, “55 672 871 437”, “230 12 435 907”, “320 32 855 107”}";
String processedString = s.replaceAll("[^a-zA-Z0-9\s]+", "");
System.out.println(processedString);
打印以下内容而不删除任何数字,
23 882 91 317 55 672 871 437 230 12 435 907 320 32 855 107