Java& RegEx:清理并拆分字符串

时间:2012-10-01 02:18:08

标签: java regex split

我有一个字符串,其中包含格式化的十进制值,如45,890.00,1.5v 2,12g等。另外,它包含特殊字符,HTML权利(转义和未转义)UTF-8编码字符等全部在一行中。虽然我已经成功清理了实体,但我仍然在努力确保拆分空格或标点符号不会拆分用逗号或句点分隔的数字。

示例字符串

> String original_str = 
>     "a,b;c.d+e-f/g\h*i~j=k?l$m 1.5 1,5 1.5v 1,5v 1255,456.78 & 6<7 &amp; 6&gt;5 &#1602; f&uuml;r; {AGB's;} ([für]); ";

预期输出

  

     

B'/ P>      

C

     

     

1.5

     

1,5

     

1.5v

     

1,5v

     

1255,456.78

     

6≤7

     

6→5

     

ق

     

献给

     

AGB的

     

献给

数字格式可以是:x.x OR xxx,xxxx.xxxx,xxxx由 COMMA分隔 | DOT |的 MIXED

在清除字符串中的实体后,我尝试用标点字符和空格列表将其拆分,但如何在拆分时保留十进制关键字(1,5 1.5v 22,33.66 ..etc)逗号和句号?

1 个答案:

答案 0 :(得分:0)

使用带有模式

的正则表达式
.split("[^0-9][.,]|[.,][^0-9]|\\s+|(?![.,])\\p{Punct}")

这将分割在句号或逗号两侧没有数字的任何内容,或任何其他不是句号或逗号的标点符号。管道之间的第3部分覆盖任何空间。最后一部分是基于一个负向前瞻,在this answer中讨论,以防止已经匹配的逗号和句号保持安全,不会在这里分割数字。