正则表达式查找单个qoutes之间的空间并替换为下划线

Mat*_*ttM 5 regex replace find

我有一个已导出的数据库表。我需要用空格替换图像文件名,并想使用notepad ++和regex来做到这一点。我有:

'data/green tea powder.jpg'
'data/prod_img/lumina herbal shampoo.JPG'
'data/ALL GREEN HERBS.jpeg'
'data/prod_img/PSORIASIS KIT (640x530) (2).jpg'
Run Code Online (Sandbox Code Playgroud)

并且需要使它们看起来像这样:

'data/green_tea_powder.jpg'
'data/prod_img/lumina_herbal_shampoo.JPG'
'data/ALL_GREEN_HERBS.jpeg'
'data/prod_img/PSORIASIS_KIT_(640x530)_(2).jpg'
Run Code Online (Sandbox Code Playgroud)

我只想更改引号之间的空格(我不想更改大小写)。更具体地说,我想替换“ data /和”之间的所有空格,因为数据库中的引号之间还有其他空格,例如:

'data/ REPLACE ANY SPACE HERE '
Run Code Online (Sandbox Code Playgroud)

我找到了这个:

\s(?!(?:[^']*'[^']*')*[^']*$)
Run Code Online (Sandbox Code Playgroud)

但是在其他地方,引号之间也有空格,因此我想data/在开头搜索,而不仅是单引号,而且我不知道该怎么做。我尝试了一下,\s(?!(?:[^'data\/]*'[^']*')*[^']*$)但是没有用,我对正则表达式还不够熟悉,无法做到这一点。

数据库中整行的示例是:

(712, 'GRTE-P', '', 'data/green tea powder.jpg', '2014-03-12 22:52:03'),
Run Code Online (Sandbox Code Playgroud)

我不想替换行尾的时间和数据戳中的空格,而只替换图像文件名。

在此先感谢您的帮助!

Cas*_*yte 2

您必须使用\G基于模式来确保匹配是连续的。

搜索:(?:\G(?!^)|'data/)[^' ]*\K[ ]
替换:_

第一个匹配使用交替的第二个分支,然后下一个匹配是连续的并使用第一个分支。