正则表达式

<(\\S*)>|<(\\S*) [^>]*>
(?= )(.*)=(.*)(?=[ >])
([^ ]*)=\"([^ ]*)\"
分别是匹配什么?急,谢谢!

    <(\S*)>|<(\S*) [^>]*>

    \S   表示匹配任何非空白字符(你这里的\\S应该是在你程序里面字符转义的意思)

    [^>]  表示匹配非>的字符

    *  表示匹配它前面的字符0到多个

    |  就是或者的意思,要么是前面的<(\S*)>匹配到,要么是后面的<(\S*) [^>]*>匹配到

    <(\\S*)>   表示匹配以<开头,以>收尾,中间是非空白字符的字符串

    (\S*) 与[^>]*有点矛盾一个匹配0到多个非空白字符,一个又要匹配0到多个非>的字符。(\S*) [^>]*在一起就是任意字符都能匹配。


    所以,这个正则的意思是:匹配以<开头,以>收尾,中间是任意0到多个字符的串。

    比如:<a12>    <a   dfas>都能匹配到




    (?= )(.*)=(.*)(?=[ >])
    (?= ) 匹配空格。它是零断言表达式,匹配空格但不获取匹配结果,也就是说这是一个非获取匹配。

    (.*)  匹配0到多个除换行以外的任意字符

    (?=[ >])  匹配空格或者>。它也是零断言表达式。

    =  普通文本,匹配等号


    所以,这个正则的意思是:匹配前面是空格,后面是空格或者>,中间是任意非换行字符=任意非换行字符的串。由于用了零断言,所以首尾都不在匹配结果内,只是做限定而已。


        不过,你这个正则本身存在一点问题:(?=pattern)是正则中零断言里面的正向肯定预查,只能用在正则的结尾,你放在开头,虽然没有语法错误,但是也显得很奇怪。如果要放开头的话,应该使用(?<=pattern)。

所以,你的正则可以改为:(?<= )(.*)=(.*)(?=[ >])


测试如下:



    ([^ ]*)=\"([^ ]*)\"
    \"应该是你在程序里面应用时的转义。

    所以,标准正则语法应该对应的是:([^ ]*)="([^ ]*)"

    [^ ]*  表示匹配非空格字符0到多个

    =  普通文本,匹配等号


    所以,这个正则的意思是:以0到多个非空格的字符开头,中间是=,后面是双引号引起来的一个串,引起来的这个串也是0到多个非空格的字符。

    可以匹配如下的串:

    a123="34sdsd"



温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网