有人可以请这个表达式为我愚蠢并提供这个表达式的含义COMBINED ...我想我知道每个char的含义,但它返回的内容(作为完整表达式)是我想要理解的简单易懂的英文:)
[^ K] +名\ =([^'] *)
由于
编辑:请看图片:
为什么它会返回“name”(peterandjohn)的第二个实例,而不是第一个“Mark = Scoobidooo”?!!
THX
EDIT2:
答案 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'`”,因为这是最后一个位置,之后我们仍然可以匹配其余的正则表达式,即“名\ =([^'] *)”。