Category: Regular Expression

  • python正则表达式的使用

    http://stackoverflow.com/questions/1450897/python-removing-characters-except-digits-from-string

     

    Nginx
    MySQL
    ^/(\d+)/(\d+)\.(\d+)\.(\d+)/quiz/(.+)
  • 正则表达式语法

    《学习正则表达式》笔记

    ^从开始匹配
    $匹配结束
    \d匹配一个任意阿拉伯数字
    \D匹配一个非数字字符,等价于[^0-9],又等价于[^\d]
    . 匹配任意一个字符,不包含换行和回车
    \d{3}表示出现单个数字的3次,花括号里是出现的次数
    \d{3,5}表示出现单个数字最小3次,最大5次
    ? 出现零次或一次
    + 匹配一个或多个,包含换行和回车
    * 匹配零个或多个
    \w 匹配字母,数字,下划线,等价于[_a-zA-Z0-9]
    \W 匹配非\w匹配的字符,等价于[^_a-zA-Z0-9],又等价于[^\w]
    \s 匹配空格,等价于[ ]
    \S 匹配非空格,等价于[^\s]
    \t 匹配制表符,tab
    \n 匹配换行符
    \r 匹配回车符
    \b匹配单词边界,不消耗任何字符
    匹配小写字母

    按键次数最少则胜

    创建捕获分组(capturing group),用来匹配字符串中的一部分,使用向后引用(back reference),对捕获的分组进行引用。

    $1是perl风格的后向引用

    常用正则表达式

    匹配域名

    grep -oE '(([a-zA-Z](-?[a-zA-Z0-9])*)\.)+[a-zA-Z]{2,}'
    
  • grep进行筛选

    排除空行和#开头的行(grep -E 扩展正归表达式)

    cat x.xx | grep -Ev "^$|#"

    过滤多个条件,或的关系

    ps aux | grep 'httpd\|nginx'
    ps aux | grep -E "httpd|nginx"

    排除以#开头的行

    cat x.xx | grep -v ^#

    查看file1中空行的行号

    grep -n ^$ file1

    需要严格匹配,如筛选abc,不需要abcd,abcde,则使用-w –word-regexp

    grep -w "abc"

    或者

    grep "\<abc\>"

    管道加grep -i不区分大小写匹配

    lspci | grep -i ether
     04:00.2 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 0a)

    直接取出当前目录文件中含有conf的行

    grep -R 'conf' .

    grep 打印出前面before,后面after,周边around的几行

    cat file | grep -A 1 aaa
    cat file | grep -B 1 aaa
    cat file | grep -C 1 aaa
    

    高亮显示 grep 出来的字符

    cat aaaa | grep --color aaaa

    去掉指定的几个 pattern

    grep -v -e "pattern1" -e "pattern2"
    grep -Ev "pattern1|pattern2"
    

    对过滤的结果计数(行数)

    grep -c 'aaaa' filename

    当前目录找到有某些字符的行及文件

    grep -rn 'bbs' .

    当前目录找到有某些字符的文件

    grep -rl 'bbs' .

    只输出匹配到的文字

    不输出文件名

    grep -h 'my_variable' /data/code/*

    例:把所有子域名打印出来

    cat domain.txt | grep -Eo '(\w+.)+jpuyy.com'

    grep 所有 ip 地址

    grep -roE '([0-9]{1,3}\.){3}[0-9]{1,3}' .

    grep 所有的 ip 网段

    grep -roE '([0-9]{1,3}\.){3}[0-9]{1,3}\/[0-9]{1,2}' .

    grep 包含中文的文件

    grep -rl '[\u4e00-\u9fa5]'  .