我在文件中有一堆C宏,其中的东西NEXT( pL )扩展到了( ( pL ) -> next )
我想删除大部分内容,因为它们是不必要的.
我想做的是将文本放在宏中的括号内pL.我希望替换正则表达式使用该文本进行重写.例如,在Perl中我可以做类似的事情/NEXT\(\s*(.+)\s*)(可能有点不正确),然后输出类似的东西$1->next,这应该变成一条线
if ( NEXT( pL ) != NULL ) {
Run Code Online (Sandbox Code Playgroud)
成
if ( pL->next != NULL ) {
Run Code Online (Sandbox Code Playgroud)
在Emacs中,我想在逐个文件的基础上在emacs replace-regexp中使用匹配组.我不完全确定如何在Emacs中执行此操作.
Tre*_*son 13
M-x query-replace-regexp NEXT(\([^)]+\)) RET \1->next RET
Run Code Online (Sandbox Code Playgroud)
这可以在像这样的函数内部完成(以应用于整个缓冲区)
(defun expand-next ()
"interactive"
(goto-char (point-min))
(while (re-search-forward "\\<NEXT(\\([^\)]+\\))" nil t)
(replace-match "\\1->next")))
Run Code Online (Sandbox Code Playgroud)
并且,要将其应用于多个文件,您可以在Dired中Qquery-replace-regexp标记文件并键入以对所有标记的文件执行操作(在此答案的第一行中使用regexp/replacement).
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |