正则表达式 – ‘string-match’在’org-map-entries’中不起作用

前端之家收集整理的这篇文章主要介绍了正则表达式 – ‘string-match’在’org-map-entries’中不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图映射文件中的所有组织条目,并收集标题的一部分,如果它与一些正则表达式匹配.

问题是字符串匹配总是返回nil.当我逐步使用edebug时,我可以看到其他一切都正常工作.

在这里,我尽可能地减少了问题:

(defun test ()
  (let ((found nil))
    (org-map-entries (lambda ()
               (let ((heading (org-get-heading t t)))
             (when (string-match "[ \t]*>>>[ \t]*\\([A-Z0-9_-]+\\)"
                         heading)
               (push (match-string 1 heading) found))))

             nil '("test.org"))
    found))

test.org中的3行:

* >>> one
* two
* >>> three

字符串匹配工作正常,否则:

(string-match "[ \t]*>>>[ \t]*\\([A-Z0-9_-]+\\)" ">>> one")
=> 0

我试过的一些事情:
  – 匹配前删除字符串属性.
  – 实现围绕重新搜索 – 转发.
  – 将正则表达式匹配移动到单独的函数.
  – 用’mapcar’替换’org-map-entries’并在列表上进行测试,工作正常.

我正在使用GNU Emacs 24.3.1(x86_64-unknown-linux-gnu,GTK版本3.4.2)

任何提示将非常感激.

解决方法

难道仅仅是这种情况下,折叠式搜索在某种程度上得到,而代码运行设置为零(因此“A-Z”没有任何更多的匹配小写字符)?如果是这样,用[:alnum:]替换A-Z0-9应该修复它.

猜你在找的正则表达式相关文章