我有一个我导出的数据库表。我需要用空格替换图像文件名,并希望使用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'
需要让它们看起来像这样:
'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'
我只想更改引号之间的空格(我不想更改大小写)。更具体地说,我想替换'data /和'之间的任何和所有空格,因为DB中的引号之间还有其他空格,例如:
'data/ REPLACE ANY SPACE HERE '
我发现了这个:
\s(?!(?:[^']*'[^']*')*[^']*$)
但是还有其他地方引号之间有空格,所以我想在beging中搜索data/
,而不仅仅是单引号,但我无法弄清楚如何。我试过了\s(?!(?:[^'data\/]*'[^']*')*[^']*$)
但它没有用,我对正则表达式不够熟悉,不能这样做。
数据库中的完整行示例如下:
(712, 'GRTE-P', '', 'data/green tea powder.jpg', '2014-03-12 22:52:03'),
我不想替换行末尾的时间和数据标记中的空格,只是替换图像文件名。
提前感谢您的帮助!
答案 0 :(得分:2)
您必须使用基于\G
的模式来确保匹配是连续的。
搜索:(?:\G(?!^)|'data/)[^' ]*\K[ ]
替换:_
第一个匹配使用交替的第二个分支,然后下一个匹配是连续的并使用第一个分支。