正则表达式 - 替换行中的空格 (Notepad++)
Regex - replace blank spaces in line (Notepad++)
我有一份包含多项信息的文件。我想要的是构建一个 Notepad++ Regex 替换函数,它在文档中找到以下行并将“”之间的空白 spaces 替换为下划线 (_).
示例:
该行是:
&LOG Part: "NAME TEST.zip"
结果应该是:
&LOG Part: "NAME_TEST.zip"
完美的解决方案是正则表达式找到 &LOG Part: "NAME TEST.zip" 行并用下划线替换空白 space。
我现在尝试的是这个表达式来查找“”之间的文本:
\"[^"]*\"
应该可以,但我不知道用哪个表达式来用下划线替换空白 spaces。
有人可以帮忙解决吗?
谢谢!
\"[^"]*\"
只会匹配从 "
到另一个最接近的 "
的整个子字符串,而不会匹配您要替换的单个 space。
由于 Notepad++ 不支持无限宽度回溯,唯一可能的解决方案是使用基于 \G
的正则表达式来设置边界并使用多重匹配(这个将替换连续的 space 为1 _
):
(?:"|(?!^)\G)\K([^ "]*) +(?=[^"]*")
或者(如果每个space都应该用下划线代替):
(?:"|(?!^)\G)\K([^ "]*) (?=[^"]*")
并替换为_
。如果你需要限制只在 &LOG Part
内替换,只需将它添加到开头:
(?:&LOG Part:\s*"|(?!^)\G)\K([^ "]*) (?=[^"]*")
人类可读的正则表达式解释:
(?:"|(?!^)\G)\K
- 找到一个 "
,或者,对于每个后续成功匹配,前一个成功匹配位置的结尾,并省略缓冲区中的所有文本(感谢 \K
)
([^ "]*) - (Group 1, accessed with
$1from the replacement pattern) 0+ characters other than a space and
"`
+
- 一个或多个文字 spaces(替换为 \h
以匹配所有水平白色 space,或替换为 \s
以匹配任何白色space)
(?=[^"]*")
- 检查当前位置前面是否有双引号
我有一份包含多项信息的文件。我想要的是构建一个 Notepad++ Regex 替换函数,它在文档中找到以下行并将“”之间的空白 spaces 替换为下划线 (_).
示例: 该行是:
&LOG Part: "NAME TEST.zip"
结果应该是:
&LOG Part: "NAME_TEST.zip"
完美的解决方案是正则表达式找到 &LOG Part: "NAME TEST.zip" 行并用下划线替换空白 space。
我现在尝试的是这个表达式来查找“”之间的文本:
\"[^"]*\"
应该可以,但我不知道用哪个表达式来用下划线替换空白 spaces。
有人可以帮忙解决吗? 谢谢!
\"[^"]*\"
只会匹配从 "
到另一个最接近的 "
的整个子字符串,而不会匹配您要替换的单个 space。
由于 Notepad++ 不支持无限宽度回溯,唯一可能的解决方案是使用基于 \G
的正则表达式来设置边界并使用多重匹配(这个将替换连续的 space 为1 _
):
(?:"|(?!^)\G)\K([^ "]*) +(?=[^"]*")
或者(如果每个space都应该用下划线代替):
(?:"|(?!^)\G)\K([^ "]*) (?=[^"]*")
并替换为_
。如果你需要限制只在 &LOG Part
内替换,只需将它添加到开头:
(?:&LOG Part:\s*"|(?!^)\G)\K([^ "]*) (?=[^"]*")
人类可读的正则表达式解释:
(?:"|(?!^)\G)\K
- 找到一个"
,或者,对于每个后续成功匹配,前一个成功匹配位置的结尾,并省略缓冲区中的所有文本(感谢\K
)([^ "]*) - (Group 1, accessed with
$1from the replacement pattern) 0+ characters other than a space and
"`+
- 一个或多个文字 spaces(替换为\h
以匹配所有水平白色 space,或替换为\s
以匹配任何白色space)(?=[^"]*")
- 检查当前位置前面是否有双引号