正则表达式去除空格 但是换行符后面的空格不要去除!
我写了一个正则Stringreg1="([^x00-xff])(\\s*)(\\d+|[A-Za-z])";([^x00-xff])表示中文(\\s*)表示空格(\\d+...
我写了一个正则 String reg1 = "([^x00-xff])(\\s*)(\\d+|[A-Za-z])";
([^x00-xff])表示中文
(\\s*)表示空格
(\\d+|[A-Za-z])表示数字或者英文
我要的结果是把中文和数字或者英文之间的空格删掉。但是它也会把换行符也给删掉了啊。那现在怎么才能不要把换行符后面的空格给删掉呢?
比如String str = "今天很开心我考了 0.9 8 \r\n 2.0同志";
我想要的结果是这样:
今天很开心我考了0.9 8分 \r\n 2.0同志
但我的正则实际上结果却是这样啊
今天很开心我考了0.9 8 2.0同志
因为 2.0同志前面有换行符并且有空格,我想让正则不要删掉,怎么办呢? 展开
([^x00-xff])表示中文
(\\s*)表示空格
(\\d+|[A-Za-z])表示数字或者英文
我要的结果是把中文和数字或者英文之间的空格删掉。但是它也会把换行符也给删掉了啊。那现在怎么才能不要把换行符后面的空格给删掉呢?
比如String str = "今天很开心我考了 0.9 8 \r\n 2.0同志";
我想要的结果是这样:
今天很开心我考了0.9 8分 \r\n 2.0同志
但我的正则实际上结果却是这样啊
今天很开心我考了0.9 8 2.0同志
因为 2.0同志前面有换行符并且有空格,我想让正则不要删掉,怎么办呢? 展开
1个回答
展开全部
\s是[\t\f\n\r ]的集合,不止代表空格,也代表换行和回车符,其实\s可以直接打个空格代表。
([^a-zA-Z ]+)[ ]+([^ ]+)|([^ ]+)[ ]+([^a-zA-Z ]+)
替换为
$1$2
([^a-zA-Z ]+)[ ]+([^ ]+)|([^ ]+)[ ]+([^a-zA-Z ]+)
替换为
$1$2
追问
这正则是可以的,但是如果字符串里有/a这类的话就过就会有问题了啊
比如 String str = " 今天很开心/a我考了 0.9 8 /0.4 \r\n 2.0同志";
结果就成这样了:
8/0.4
2.0同志
有什么好办法可以优化的吗,谢谢啊
追答
在js,java中已经有/ 所以 / 是需要转换(转义)成 \/ 在正则替换之前 用替换函数把/替换为\/
我觉得应该把/"等符号替换为别的,最后替换回来
字符串中有\n等,也应该转换成\\n等
沉默了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询