不是一个regex专家。但是,在网上搜索了一下,我想到了这个表达式来交换我文件中的两个文本。
%s/(\s*\(&\)\(.*\), \(.*\)\s*);/( \3, \2 );/gc
我的初始文本
read( ®Val.mAllBits, getAddr()+offset );
我想把它换成:
read( getAddr()+offset, regVal.mAllBits );
如上图所示,要求是:
我让开头和结尾的\s*忽略白色空间。但是,它的问题是,语句中结尾括号前的空白会被添加到匹配3中。因此,我得到的结果是。
read( getAddr()+offset , regVal.mAllBits );
请注意','前有额外的空白。我尝试了很多方法,但无法解决这个问题。有谁能帮助我忽略我的regex语句中模式匹配中的空白?
如果你不想匹配空格,必须使用 \S
不 .
因为 .
将匹配 任何 字符,包括空格。正则表达式默认总是贪婪的,所以会尽可能地匹配。
%s/(\s*\(&\)\(.*\), \(\S*\)\s*);/( \3, \2 );/gc