首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex -替换行中的空格(Notepad++)

Regex -替换行中的空格(Notepad++)
EN

Stack Overflow用户
提问于 2016-03-22 13:18:14
回答 1查看 1.8K关注 0票数 1

我有一份包含多种信息的文件。我想要的是构建一个Notepad++ Regex替换函数,该函数在文档中找到以下行,并用下划线(_)替换"“之间的空格。

示例:这一行是:

代码语言:javascript
运行
复制
&LOG Part: "NAME TEST.zip"

其结果应该是:

代码语言:javascript
运行
复制
&LOG Part: "NAME_TEST.zip"

最好的解决方案是regex找到&LOG部件:"NAME TEST.zip“行,并用下划线替换空格。

我现在尝试的是这样的表达,以找到“”之间的文本:

代码语言:javascript
运行
复制
\"[^"]*\"

它应该这样做,但我不知道用哪个表达式来用下划线代替空格。

有人能帮上忙吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-22 13:24:31

\"[^"]*\"将只匹配从"到另一个最接近的"的整个子字符串,而不匹配要替换的单个空格。

由于Notepad++不支持无限宽后视,唯一可能的解决方案是使用基于\G的正则表达式设置边界并使用多个匹配(此匹配将用1_替换连续的空格):

代码语言:javascript
运行
复制
(?:"|(?!^)\G)\K([^ "]*) +(?=[^"]*")

或者(如果每个空格应该用下划线替换):

代码语言:javascript
运行
复制
(?:"|(?!^)\G)\K([^ "]*) (?=[^"]*")

代之以$1_。如果只需要在&LOG Part内部进行替换,只需将其添加到开头:

代码语言:javascript
运行
复制
(?:&LOG Part:\s*"|(?!^)\G)\K([^ "]*) (?=[^"]*")

对正则表达式的可读的解释:

  • (?:"|(?!^)\G)\K -查找一个",或者在每次成功匹配之后,找到上一个成功匹配位置的结尾,并省略缓冲区中的所有文本(感谢\K)。
  • ([^ "]*) - (Group 1, accessed with$1from the replacement pattern) 0+ characters other than a space and"`
  • + -一个或多个文字空格(用\h替换为匹配所有水平空格,或用\s替换为匹配任何空格)
  • (?=[^"]*") -检查当前头寸前是否有双引号
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36155447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档