我正在使用 Sublime Text,我想知道是否有办法使用 Regex 来做到这一点:
我有多个包含不同行和文本的文件。
在每个行中,我都有一行以“NAME:”开头,并继续显示该人的姓名:
NAME : john doe smith
我希望使用正则表达式将文本中的空格替换john doe smith
为字符_
(基本上位于文本之后)NAME :
,因此新行将是:
NAME : john_doe_smith
到目前为止,我已经尝试这样做:将包含“NAME”的行(无法使其与完整的“NAME:”)与Find匹配:
^.*\b(NAME)\b.*$
但我不知道如何替换匹配后的空格。
有没有办法用 Regex 来实现这一点?
答案1
答案2
这取决于您在哪里使用正则表达式:
以下使用 sed:
sed ':redo s/^\(\s*NAME\s*:\s*\S\+\)\s\+\([^_[:space:]]\)/\1_\2/ ;t redo' files
这里的技巧是t redo
,它会根据条件分支回到标签重做,重新运行替换直到失败。
请注意,该模式包含一些粘合部分,以便在:
可选项周围留出空格,忽略尾随空格,并将多个空格减少为一个_
。