【发布时间】:2018-11-15 21:10:35
【问题描述】:
我在尝试正确进行正则表达式分组时遇到问题。我有一个字符串,说:
dtASDF[a, b, c]
我用的表达方式:
dt\\(.*\\)\\[\\(.*\\), \\(.*\\), \\(.*\\)\\]
它将a、b 和c 单独分组,非常完美。问题是字符串可能是:
dtASDF[a, .(b, c), .(d, e)]
在这种情况下,上面的表达式不起作用,因为它只是在寻找逗号。所以问题是,由于 emacs 没有环视,有没有办法按逗号分隔分组,但如果逗号在括号之间,则不能?
也就是说,这里的分组应该是:a、.(b, c)、.(d, e)。
我知道 SO 上存在类似问题,但我找不到与 elisp 正则表达式相关的问题,这很棘手,因为它没有通常用于此类事情的外观。
【问题讨论】:
-
没有骰子。我认为您需要 emacs 中的那些双重转义。
-
是的,那也不行。那不匹配任何东西。 Elisp 对 \\ vs \ 很奇怪 这个问题可能可以用一个更简单的例子来回答,在 elisp 中,将
(asdf, asdf), asdf过滤成两组:(asdf, asdf)和asdf -
在我的示例中,
\[.*?\]仅匹配dtASDF[a, .(b, c), .(d, e)]中的句点。\\[.*?\\]匹配所有内容,包括[...]