我试图使用正则表达式的查找和替换将第一个空格去除TextMate中文本文件的每一行的行尾。
例如,我想替换以下行:
One, 2, Three!
使用:
One,
我查看过this个问题,但我真的不明白如何使用已接受的答案。它似乎匹配整条线,而不是第一个空格。
我是否需要使用lookbehind匹配第一个空格?
我开始尝试:
^([^\s]*)\s.+$
如果有空格,则匹配整行,但是一行上没有空格,它一次匹配两行。
当我拥有正确的正则表达式时,我是否只需将其放入"查找"框和点击"全部替换"使用"替换"盒子空白?我也不太了解"替换模式"回答者在我链接的问题中谈论的语法。
感谢。
编辑2018年8月9日:这似乎得到了一些观点。如果有人希望使用命令行工具执行此操作,您可以尝试:
awk '{print $1}' myfile.txt > output.txt
或写回您可以执行的同一文件:
awk '{print $1}' myfile.txt | sponge myfile.txt
这将占用任何空格之前的第一列,包括制表符。具体分割空格:
cat myfile.txt | cut -d ' ' -f 1 > output.txt
答案 0 :(得分:3)
没有一个正确的正则表达式。有很多方法可以做到这一点。你可以使用lookbehind,但没有必要。如何实际使用正则表达式还取决于模式的设计方式 - 您可能不得不替换任何内容,或者您可能必须替换为比正则表达式模式本身更复杂的花哨文本。 / p>
可能最简单的模式是.*(?:\n|$)
- 什么都不替换。 (注意点前面的空格。)
另一个是^(.*?) .*?$
,需要多线修改器才能工作。这个使用起来比较棘手:你必须用\1
替换。此替换模式引用正则表达式捕获的文本 - 在本例中为所有文本,直到第一个空格。如果省略此项,则将删除包含空格的所有行。
答案 1 :(得分:1)