基本规则

  1. #----特殊字符----
  2. $ 匹配输入字符串的结尾位置
  3. ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( \)
  4. * 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*
  5. + 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
  6. . 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
  7. [ 标记一个中括号表达式的开始。要匹配 [,请使用 \[
  8. ? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?
  9. \ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
  10. ^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^
  11. { 标记限定符表达式的开始。
  12. | 指明两项之间的一个选择
  13. #----限定字符----
  14. * 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
  15. + 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
  16. ? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" "does" 中的"do" 。? 等价于 {0,1}。
  17. {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o
  18. {n,} n 是一个非负整数。至少匹配n 次。
  19. {n,m} m n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
  20. #----字母简写----
  21. [[:space:]]:所有空格字符
  22. [[:punct:]]:标点符号
  23. [[:lower:]]:小写字母
  24. [[:upper:]]:大写字母
  25. [[:digit:]]:数字
  26. [[:alnum:]]:数字和大小写字母

正则-shell示例

#Ex1:取小括号的内容
cat test.txt |awk -F '[()]' '{print $2}'
#Ex2:取IP
ifconfig | grep -E --color=auto "(([0-9]{1,3}\.){3}[0-9]{1,3})"
#Ex3:取域名