简单英语中[^ K] +名称\?=([^'] *)的含义

时间:2014-02-23 07:49:19

标签: regex

有人可以请这个表达式为我愚蠢并提供这个表达式的含义COMBINED ...我想我知道每个char的含义,但它返回的内容(作为完整表达式)是我想要理解的简单易懂的英文:)

[^ K] +名\ =([^'] *)

由于

编辑:请看图片:http://i.imgur.com/0bDhJmp.png

为什么它会返回“name”(peterandjohn)的第二个实例,而不是第一个“Mark = Scoobidooo”?!!

THX

EDIT2:

enter image description here

2 个答案:

答案 0 :(得分:4)

正则表达式:[^K]+name\?=([^']*)

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  [^K]+                    any character except: 'K' (1 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  name                     'name'
--------------------------------------------------------------------------------
  \?                       '?'
--------------------------------------------------------------------------------
  =                        '='
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [^']*                    any character except: ''' (0 or more
                             times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1

答案 1 :(得分:2)

这种情况正在发生,因为'+'量词是“贪婪的” - 它试图在正则表达式的下一部分匹配之前尽可能多地匹配(即使它已经找到匹配)。

通俗地说,[^K]+不会在

停止匹配

输出:'名称?= Mark = scobidoo'”,因为“名称?=标记 ...”

跟随也匹配由[^ K] +(记住你已经使你的正则表达式区分大小写,这就是为什么Mark中的'k'匹配[^K]+)。 [^K]+最终将停止匹配“输出:'名称?= peteandjohn'`”,因为这是最后一个位置,之后我们仍然可以匹配其余的正则表达式,即“名\ =([^'] *)”。