在elisp正则表达式中匹配搜索起始位置

3

我正在使用elisp进行一些解析工作,我有一个字符串已经部分被消耗(假设它的值是"foobar123")。假设我已经消耗了"foobar"(所以我知道需要从第6个字符开始解析),并且期望消耗一个2

我尝试了以下方法,但都没有达到我想要的效果。

(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
如果您将其表述为明确的答案,我会接受它。 - Jack Kelly
1个回答

1
我不知道有这样的正则表达式语法。
另一个解决方案是将字符串插入缓冲区,随着消耗字符串移动点,并使用\=结构匹配该点。

我查看了gnu.org上最新的elisp手册,你似乎是正确的。 - Jack Kelly
1
@JackKelly,我刚刚意识到,如果你把文本放在缓冲区中,使用(looking-at "...")比使用(re-search-forward "\\=...")更自然。 - Lindydancer
谢谢。我现在会继续使用字符串,因为我要解析的内容很小(ed地址),但这也是一个好的知识点。 - Jack Kelly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接