我正在尝试使用正则表达式来删除特定单词后的所有空格。我使用的编辑器是 Notepad++ 但可以使用 Unix
在这种情况下,我可以通过运行正则表达式 \VALUES 来突出显示 VALUES,但我不确定如何删除此后的空格。
答案1
使用sed
:
$ sed 's/VALUES[[:blank:]]*/VALUES/g' input >output
这会将VALUES
后面的任意数量的空白字符(空格或制表符)替换为VALUES
,即它将删除空白。
如果重要的是VALUES
作为一个完整的单词进行匹配,whateverVALUES
即不是匹配,然后在之前插入一个(开头)单词边界模式VALUES
:
$ sed 's/[[:<:]]VALUES[[:blank:]]*/VALUES/g' input >output
我将在本答案的其余部分中保留这一点。
对于更复杂的 值VALUES
,不必键入两次可能会很方便:
$ sed 's/\(VALUES\)[[:blank:]]*/\1/g' input >output
这将保存VALUES
模式并在替换中重复使用它。
如果模式VALUES
存储在 shell 变量中$values
:
$ sed "s/\($values\)[[:blank:]]*/\1/g" input >output
这或多或少直接转移到 Vim 编辑器中:
:%s/\(VALUES\)[[:blank:]]*/\1/
由于我从未使用过Notepad++,所以我只能猜测如何使用它。显然应该能够按Ctrl+H并输入搜索/查找和替换模式。
搜索模式可能(VALUES)[[:blank:]]*
替换模式时可能是$1
。我没有办法测试这个,抱歉。如果[[:blank:]]
不起作用,请尝试使用[\t ]
.
答案2
您可以使用\s*
(GNU) 或[[:space:]]*
(portable) 来捕获制表符(以及所有其他水平和垂直间距字符)以及空格。
$ cat file
stuff and VALUES <--tab
more VALUES <--three spaces
VALUES <--tab, three spaces, tab
$ sed 's/VALUES\s*/VALUES/' file
stuff and VALUES<--tab
more VALUES<--three spaces
VALUES<--tab, three spaces, tab
答案3
使用sed
:
sed -e 's/VALUES \+/VALUES/'
用于+
匹配后面的所有空格VALUES
答案4
在 Notepad++ 中调出查找和替换窗口
在查找框中,输入(VALUES)\s*
(这与“VALUES”后跟任意数量的空格匹配)在替换框中,输入\1
(这将插入第一个组(括号内()
)
确保正则表达式已启用
单击“全部替换”以将“VALUES[一些空格]”的所有实例替换为“VALUES”