Shell 字符串大小写转换

  • tr 指令 translate character的简写
1
2
3
VARIABLE="User"
LOWERCASE=$(echo $VARIABLE | tr '[A-Z]' '[a-z]')
UPPERCASE=$(echo $VARIABLE | tr '[a-z]' '[A-Z]')
1
2
3
4
$ echo $LOWERCASE
user
$ echo $UPPERCASE
USER
  • typeset 指令
1
2
3
4
5
VARIABLE="User"
# 对VARIABLE进行处理,转换为大写,注意没有$
typeset -u VARIABLE
# 对VARIABLE进行处理,转换为小写
typeset -l VARIABLE
1
2
3
4
5
6
$ typeset -u VARIABLE
$ echo $VARIABLE
USER
$ typeset -l VARIABLE
$ echo $VARIABLE
user

Java-Regex

Java正则表达式

Java,JavaScriptShell中使用的正则表达式的差异以及相互转换

  • Java的字符串中,\表示转义字符,因此要保留在正则表达式中的转移字符\,需要使用\\
  • 使用Pattern类的compile方法创建一个Pattern对象,matcher方法来获取一个Matcher对象
1
2
3
4
5
// 匹配email地址的正则表达式
String message = "somebody@demo.com";
// 原正则表达式为 ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$,将\替换为\\
Pattern pattern = Pattern.compile("^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$");
boolean isMatch = pattern.matcher(message).matches();
1
2
3
String message = "somebody@demo.com";
String regex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";
boolean isMatch = Pattern.matches(regex, message);
1
2
3
4
// 使用String类的内置正则表达验证方法matches(),与Pattern.matches()方法效果完全相同
String message = "somebody@demo.com";
String regex = "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$";
boolean isMatch = message.matches(regex);

Shell中不需要对正则表达式做额外处理,直接使用

1
2
3
4
REGEX="^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"
FILE="/opt/somefile"
# 检查FILE中是否有符合正则表达式规则的内容
grep $REGEX $FILE
  • JavaScript中也不需要对正则表达式做额外处理,直接使用

正则表达式相关字符串操作

  • 替换,参考MatcherreplaceFirst()replaceAll()方法
  • 追加替换,参考MatcherappendReplacementappendTail()方法

常用正则表达式

  • 手机号
1
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • 邮箱地址
1
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
  • 中文字符串
1
^[\u4e00-\u9fa5]*$
  • 英文字符串
1
^[A-Za-z]+$