Emacs regex查询替换,表达式中的空格已删除

Emacs regex查询替换,表达式中的空格已删除,regex,emacs,Regex,Emacs,我试图用emacs中的正则表达式替换文件中错误的C支撑样式 全部 类似的情况必须变成: if (foo) { bar(); } 请我们不要讨论这样做是否是个好主意,或者哪种支撑方式最好。求你了 我正试图通过emacs的query replace regexp实现这一点: 匹配“^Q^J+{” 替换为“SPC{^Q^J”,其中SPC为实际空格(此处不显示) 不知何故,字符串中要替换为的第一个字符没有被考虑在内,我最终得到: if (foo){ bar(); } (在{之前没

我试图用emacs中的正则表达式替换文件中错误的C支撑样式

全部

类似的情况必须变成:

if (foo) {
    bar();
}
我们不要讨论这样做是否是个好主意,或者哪种支撑方式最好。求你了

我正试图通过emacs的query replace regexp实现这一点:

  • 匹配“
    ^Q^J+{
  • 替换为“
    SPC{^Q^J
    ”,其中
    SPC
    为实际空格(此处不显示)
不知何故,字符串中要替换为的第一个字符没有被考虑在内,我最终得到:

if (foo){
    bar();
}
(在
{
之前没有空格)

知道发生了什么吗?我如何确保空间到达那里?

这个怎么样:

(defun braces-KR-style ()
  (interactive)
  (goto-char (point-min))
  (while (search-forward-regexp "\n[[:blank:]]*?{" nil t)
    (replace-match " {" nil t))
  )

将“^Q^J*{”替换为“{”为什么它不能与
+
一起使用?我尝试替换任何大于1的空格数(即不是第1列的
{
)。如果我使用
*
,我会替换
{
在函数定义的开头。我只是尝试了您的regexp和替换,但没有得到您观察到的效果,即,我确实在
(foo)
{
之间有一个空格。P.S.:为什么在
之后重新插入
^Q^J
{
在替换中?大括号后面不是应该有一个换行符吗?@Thomas:这很奇怪。你对
^Q^J
的看法是正确的,删除它会使缺少的空格出现。所以我的实际问题有了解决方案,但我仍然不明白为什么添加
^Q^J
会删除空格。这不是原因,事实上,即使我将
^Q^J
保留在中(这会产生预期的空行),它对我也很有效。
(defun braces-KR-style ()
  (interactive)
  (goto-char (point-min))
  (while (search-forward-regexp "\n[[:blank:]]*?{" nil t)
    (replace-match " {" nil t))
  )