我正在尝试使用正则表达式删除特定单词后的所有空格。我使用的编辑器是 Notepad++ 但可以使用 Unix
在这种情况下,我可以通过运行 regex \VALUES 来突出显示 VALUES,但我不确定在此之后如何删除空格。
使用sed:
$ sed 's/VALUES[[:blank:]]*/VALUES/g' input >output
Run Code Online (Sandbox Code Playgroud)
这将用 替换VALUES后跟任意数量的空格字符(空格或制表符)VALUES,即它将删除空格。
如果是很重要的VALUES匹配作为一个完整的词,即whateverVALUES是不匹配的,然后插入一个(开始-OF-)字边界模式之前VALUES:
$ sed 's/[[:<:]]VALUES[[:blank:]]*/VALUES/g' input >output
Run Code Online (Sandbox Code Playgroud)
我将在本答案的其余部分忽略这一点。
对于更复杂的 值VALUES,不必键入两次可能会很方便:
$ sed 's/\(VALUES\)[[:blank:]]*/\1/g' input >output
Run Code Online (Sandbox Code Playgroud)
这将保存VALUES模式并在替换中重用它。
如果模式VALUES存储在 shell 变量中$values:
$ sed "s/\($values\)[[:blank:]]*/\1/g" input >output
Run Code Online (Sandbox Code Playgroud)
这或多或少地直接传输到 Vim 编辑器中:
:%s/\(VALUES\)[[:blank:]]*/\1/
Run Code Online (Sandbox Code Playgroud)
由于我从未使用过 Notepad++,所以我只能猜测如何使用它。人们显然应该能够按Ctrl+H并输入搜索/查找和替换模式。
搜索模式可能是,(VALUES)[[:blank:]]*而替换模式可能是$1。我没有办法测试这个,抱歉。如果[[:blank:]]不起作用,请尝试使用[\t ].