2013-03-27 52 views

回答

24

您可以使用後面的內容來確保它不在開頭。 (?<!^)aaa

+0

無論如何否定位置斷言? – StackOverflowNewbie 2013-03-27 21:15:59

+1

我仍然需要捕獲'aaa'。只是用括號包起來? – StackOverflowNewbie 2013-03-27 21:19:22

+1

更新後的正則表達式將在組0中捕獲它。 – Joe 2013-03-27 21:20:01

5

如果你不想使用回顧後,然後使用這個表達式:

/.(aaa)/ 

並使用matched group # 1

+1

這是最好的答案,因爲它可以與其他正則表達式的方言一起使用。 – tmalsburg 2018-02-12 09:45:09

6

自從我來到這裏,通過谷歌搜索,併爲感興趣的是一個解決方案,不使用後視,這裏是我的2美分。

[^^]aaa圖案和比^其他一個字符,然後3 a小號任何地方在字符串內相匹配。 [^...]negated character class其中^不被視爲特殊字符。請注意,在[之後的第一個^是特殊的,因爲它表示否定,而第二個僅僅是文字插入符號。

因此,^不能在[...]之內以表示字符串的開始。

一個解決方案是使用任何負面環視,這兩個將工作同樣出色:

(?<!^)aaa 

和前瞻:

(?!^)aaa 

爲什麼先行的作品,太? Lookarounds是零寬度斷言,並且錨也是零寬度 - 它們不消耗文本。從字面上看,(?<!^)會檢查當前位置左側是否沒有立即開始字符串位置,並且(?!^)會檢查當前位置右側是否沒有字符串開始位置。同樣的地點正在檢查,這就是爲什麼兩個工作正常。

+1

感謝您的前瞻性選擇,因爲Javascript還不支持後臺管理。 – 2018-01-11 18:02:13