1简介
正则表达式是一种强大而灵活的文本处理工具,使用正则表达式,我们能够构造复杂的文本模式,并对输入的字符串进行搜索,一旦找到了匹配这些模式的部分,你就能能够随心所欲的对它们进行处理。
有一种场景,在进行工资excel解析时,由于excel第一行中标题很可能有空格,这会给我们后续的处理带来很多麻烦,比如说如下的情形,一般工资excel含有如下字段
姓名, 人员类别,入职时间,结算部门,职业年金等,一种可能的情形是,为了对齐, Excel中第一行的内容为
" 姓 名",“人员类别”, “入职时间”, “职业年金(文)”, “基本工资(含补助)”
可见在上述的标题中中文之间存在空格,并且职业年金(文)存在中文括号()以及英文(),需要使用代码去除这些内容。
2代码片段
public static void main(String[] args) {
String str = " 姓 名";
str = str.replace(" ", "");
System.out.println(str);
String str2 = "周杰伦()".replace("(", "").replace(")", "");
System.out.println(str2);
String str3 = " 职 " +
"业 年 金(文)";
str3 = str3.replaceAll("(|)|\\s", "");
System.out.println(str3);
String str4 = " 职 " +
"业 年 金(文) ";
str4 = str4.replaceAll("[\\s()()]", "");
String str5 = "基本工资(含补助)";
str5 = str5.replaceAll("[\\s()()]", "");
System.out.println(str5);
System.out.println("End");
}
在上述代码片段中,
\\s
表示空白符(空格、tab、换行、分页)的正则表达式。
另外逻辑操作符
XY 表示Y紧跟在X之后
X|Y X或Y
(X) 捕获组
[abc] 包含a、b、c的任何字符和(a|b|c)作用相同
. 任意字符
[^abc] 除了a、b、c之外的任何字符
\d 数字[0-9]
\D 非数字
\w 词字符[a-zA-Z0-9]
\W 非词字符
3总结
程序员作为一种积累性的职业,留意工作中的小技巧,提升工作效率是非常必要的。