正则表达式

» Tools

常用匹配方式

匹配方式 说明
(pattern) 匹配 pattern 并获取保存这一匹配。通过 $1 获取变量
(?:pattern) 匹配 pattern 但不获取匹配结果,不进行变量存储,使用 $1 方式无用
(?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。不进行变量存储。例如,”Windows(?=95|98|NT|2000)”能匹配”Windows2000”中的”Windows”,但不能匹配”Windows3.1”中的”Windows”。
(?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。不进行变量存储。例如”Windows(?!95|98|NT|2000)”能匹配”Windows3.1”中的”Windows”,但不能匹配”Windows2000”中的”Windows”。
(?<=pattern) 反向肯定预查,与正向肯定预查类似,只是方向相反。例如,”(?<=95|98|NT|2000)Windows”能匹配”2000Windows“中的”Windows“,但不能匹配”3.1Windows“中的”Windows“。
(?<!pattern) 反向否定预查,与正向否定预查类似,只是方向相反。例如”(?<!95|98|NT|2000)Windows”能匹配”3.1Windows”中的”Windows”,但不能匹配”2000Windows”中的”Windows”。
例子说明:
struct.m_1;
struct.m_2;
struct.m_3;
struct.m_4;
struct.m_5;

(pattern): //进行存储供以后使用 $1 方式获取
表达式:
    struct.(.*)
匹配结果:
    共找到 5 处匹配:
    struct.m_1;  //$1 = m_1
    struct.m_2;  //$1 = m_2
    struct.m_3;  //$1 = m_3
    struct.m_4;  //$1 = m_4
    struct.m_5;  //$1 = m_5

(?:pattern): //不进行存储供以后使用 $1 方式无用
表达式:
    struct.(?:m_2)
匹配结果:
    共找到 1 处匹配:
    struct.m_2  //$1方式无用
    
(?=pattern): //正向肯定预查
表达式:
    struct.(?=m_2)
匹配结果:
    共找到 1 处匹配:
    struct.
    
(?!pattern): //正向否定预查
表达式:
    struct.(?!m_2)
匹配结果:
    共找到 4 处匹配:
    struct.        //m1
    struct.        //m3
    struct.        //m4
    struct.        //m5
    
(?<=pattern): //反向肯定预查
表达式:
    (?<=m_2);
匹配结果:
    共找到 1 处匹配:
    ;            //m2的分号
    
(?<!pattern): //反向否定预查
表达式:
    (?<!m_2);
匹配结果:
    共找到 4 处匹配:
    ;            //m1
    ;            //m3
    ;            //m4
    ;            //m5