文件类型扩展名之前所有非法文件名字符的正则表达式
Regex for all illegal filename characters before filetype extension
我正在寻找一个可以交换所有非法文件名字符的正则表达式,例如 () space 。等等,在文件类型以 .jpg 结尾之前 -
我得到:
[^a-zA-Z0-9_-]+
匹配每个非法文件名字符,但包括文件扩展名
和
.*(?=.)
匹配所有内容,直到最后一次出现 .
如何组合这些?
我的一个邪恶文件名是
(800x800-png)MGC1000-03EPTD-021_RAL7035-5010.tif.png
替换正则表达式后应该是这样的
-800x800-png-MGC1000-03EPTD-021_RAL7035-5010-tif.png
正则表达式应该在 libre office 中工作/excel 搜索和替换。
感谢您的帮助!
您可以使用 negated character class [^a-zA-Z0-9_-]+
and use a positive lookahead 断言字符串以点和 1 个以上的单词字符结尾。
在替换中使用连字符 -
[^a-zA-Z0-9_-]+(?=.*\.\w+$)
根据 @Stein 的评论,您可以将其缩短为:
[^\w-]+(?=.*\.\w+$)
说明
[^a-zA-Z0-9_-]+
匹配1+次不在字符class 中的任何字符
(?=
正向前瞻,断言右边的是
.*\.\w+
匹配任何字符 0+ 次,然后匹配一个点和 1+ 个单词字符
$
断言字符串结束
)
关闭正面前瞻
如果扩展本身可以包含特殊字符,那么您可以将 \w+$
更新为 [^.\s]+$
,例如:
[^\w-]+(?=.*\.[^.\s]+$)
我正在寻找一个可以交换所有非法文件名字符的正则表达式,例如 () space 。等等,在文件类型以 .jpg 结尾之前 -
我得到: [^a-zA-Z0-9_-]+ 匹配每个非法文件名字符,但包括文件扩展名 和 .*(?=.) 匹配所有内容,直到最后一次出现 .
如何组合这些?
我的一个邪恶文件名是 (800x800-png)MGC1000-03EPTD-021_RAL7035-5010.tif.png
替换正则表达式后应该是这样的 -800x800-png-MGC1000-03EPTD-021_RAL7035-5010-tif.png
正则表达式应该在 libre office 中工作/excel 搜索和替换。
感谢您的帮助!
您可以使用 negated character class [^a-zA-Z0-9_-]+
and use a positive lookahead 断言字符串以点和 1 个以上的单词字符结尾。
在替换中使用连字符 -
[^a-zA-Z0-9_-]+(?=.*\.\w+$)
根据 @Stein 的评论,您可以将其缩短为:
[^\w-]+(?=.*\.\w+$)
说明
[^a-zA-Z0-9_-]+
匹配1+次不在字符class 中的任何字符
(?=
正向前瞻,断言右边的是.*\.\w+
匹配任何字符 0+ 次,然后匹配一个点和 1+ 个单词字符$
断言字符串结束
)
关闭正面前瞻
如果扩展本身可以包含特殊字符,那么您可以将 \w+$
更新为 [^.\s]+$
,例如:
[^\w-]+(?=.*\.[^.\s]+$)