【发布时间】:2016-04-26 14:44:13
【问题描述】:
我想在 c/c++ 缓冲区中搜索正则表达式,但我想避免表达式匹配注释区域。有没有办法使用 c 模式来知道一堆文本是否在评论区域内(或一个点在评论区域内)?
【问题讨论】:
我想在 c/c++ 缓冲区中搜索正则表达式,但我想避免表达式匹配注释区域。有没有办法使用 c 模式来知道一堆文本是否在评论区域内(或一个点在评论区域内)?
【问题讨论】:
解决这个问题的方法是使用syntax-ppss,它适用于 C/C++ 和大多数主要模式。例如。当且仅当您不在字符串或注释中时,(null (nth 8 (syntax-ppss))) 才会为非零。
【讨论】:
(defun re-search-forward-not-in-comment (regexp)
"Search forward first regexp not inside a comment. "
(interactive
(list (read-from-minibuffer "Regexp: ")))
(while (and (re-search-forward regexp nil t 1)
(and (nth 8 (syntax-ppss))(nth 4 (syntax-ppss))))))
【讨论】: