在括号前替换空格

3
我正在学习正则表达式,我希望使用Notepad++的正则表达式搜索和替换功能将开括号前的所有空格替换为下划线。目前,我的正则表达式只会在空格紧挨着开括号时进行替换。
替换前:FIRST MIDDLE LAST(" ", " ") 期望结果:FIRST_MIDDLE_LAST(" ", " ") 我的尝试的正则表达式:\s+(?=\() \s+ 匹配一个或多个空格 (?=\() 是一个正向前瞻,它以 \((开括号)作为字符进行匹配。
请问有没有人可以解释一下正确的正则表达式是什么呢?先谢谢了!

2
我猜测\s+(?=[^()]*\() - georg
@thg435已经给出了答案,使用http://regex101.com/进行测试。可能的更正是`\s+(?=[^(]*\()`,因为我们只需要寻找一个开括号。 - Rossiar
@Rossiar:不,我认为[^()]更好,[^(]会将foo )bar(转换为foo_)bar(-看起来不对! - georg
@thg435 谢谢,这个正则表达式很有效并且很有意义。 - David Yee
1个回答

2
如果我理解正确,这应该适用于您:
查找\b\s+(?=.*?\(),替换为_ 即所有紧跟在单词边界后面的空格,再跟着一些字符直到第一个开括号出现,但不包括选择中的开括号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接