2015-04-29 47 views
3

我正在elisp中進行一些解析,並且我有一個我已部分消耗的字符串(讓我們假設其值爲"foobar123")。假設我已經使用了"foobar"(所以我知道我需要從char 6開始分析),並且期望消耗2匹配elisp正則表達式中的搜索開始位置

我試過以下,沒有一個做我想要的。

(string-match "2" "foobar123" 6) ; Matches the `2` at character 7. 
(string-match "^2" "foobar23" 6) ; Not at the beginning of line. 
(string-match "\\`2" "foobar23" 6) ; Not at the beginning of string. 

我已經成功拉出一子,並針對匹配(即(string-match "^2" (substring "foobar23" 6))),但這似乎浪費。這感覺就像我想要一個特殊字符,意思是「只在搜索開始時匹配」,但我找不到一個。有沒有更好的辦法?

+1

沒有我知道的這樣的正則表達式語法。另一種解決方案可能是將字符串插入緩衝區,當您使用字符串時移動該點並使用'\ ='結構來匹配點。 – Lindydancer

+0

把它作爲一個明確的答案,我會接受。 –

回答

1

沒有我知道的這樣的正則表達式語法。

另一種解決方案是將字符串插入緩衝區,當您使用字符串時移動該點並使用\=構造來匹配點。

+0

我查看了gnu.org上最新的elisp手冊,你看起來是正確的。 –

+1

@JackKelly,我剛剛意識到,如果將文本放在緩衝區中,使用'(查看「...」)而不是像'(re-search-forward「\\ =)那樣更自然。 ..「)'。 – Lindydancer

+0

謝謝。現在我會堅持使用字符串,因爲我所做的解析非常小(編輯地址),但這很好理解。 –