2016-12-02 80 views
3

的第一個實例,我想了匹配網址,除非特殊字符的正則表達式匹配,但是我現在用的正則表達式是當我需要它的第一個實例之後停止匹配的最後一個實例。我究竟做錯了什麼?!直到某個字符

.+?(?=\") 

要匹配,直到第一"

但是我的結果是下面的一切:

enter image description here

回答

5

您添加"到模式的耗能部件,將其刪除。

.+?(?=\") 

請參閱demo。在這裏,.+?匹配任何字符1+,儘可能少,上升到第"從比賽中排除,因爲「`是先行(一zero-width assertion)的一部分

最好是使用negated character class

^[^"]+ 

another demo。在這裏,^[^"]+比賽1+字符以外"(見[^"]+)從一個字符串(^)的開始。

+0

我現在用在PHP代碼的命令行回聲 - echo shell_ex ec(「cat/tmp/url | grep -Eo'^ [^ \「] +'」);我沒有得到任何結果,雖然我認爲它的任何想法,因爲我沒有使用反斜槓的某處,但是我嘗試了一切似乎 – NeverPhased

+0

'grep -Eo'^ [^「] +''應該從開頭提取字符串將第一個'''的一行排除在匹配之外。請參閱[本演示](http://ideone.com/hvNZ1m)。 –

相關問題