Java中移除ASCII控制字符的正则表达式解析
Java正则表达式
[\p{Cntrl}&&[^\r\n\t]]解析 1. 会被移除的控制字符包含哪些?
ASCII里的控制字符是ASCII码0-31和127的字符,这个表达式会移除其中除回车(\r,ASCII 13)、换行(\n,ASCII 10)、制表符(\t,ASCII 9)之外的所有控制字符。具体包括:
- 空字符(
\0,ASCII 0) - 响铃符(
\a,ASCII 7) - 退格符(
\b,ASCII 8) - 换页符(
\f,ASCII 12) - 以及ASCII码1-6、11、14-31、127对应的所有不可见控制字符
2. 表达式中的&&代表什么含义?
在Java正则的字符类规则里,&&表示交集——就是取两个字符类的共同部分。这里就是先圈出所有属于\p{Cntrl}(控制字符)的字符,再从中筛选出同时符合[^\r\n\t](不是回车、换行、制表符)的字符,最终得到的就是要被移除的目标字符。
3. ^是否表示仅匹配行首?
这里的^不是匹配行首。在正则的字符类[]内部,^的作用是取反,意思是“排除后面列出的字符”。所以[^\r\n\t]就是指“不是回车、换行、制表符的任意字符”。
非技术化全面解释
这个正则表达式就像一个文本清洁器:它专门找那些你在屏幕上看不到的“隐形捣乱字符”——比如会让光标乱跳、发出响声、或者让文本排版变乱的隐藏字符,但会手下留情放过三个有用的“隐形工具”:回车(让内容跳到下一行开头)、换行(让内容换到下一行)、制表符(相当于按Tab键缩进),最后把剩下的那些没用的隐形字符全部删掉,让你的文本变得干净整齐。
内容的提问来源于stack exchange,提问作者Simeon Leyzerzon
相关产品推荐
相关产品推荐

