[英]How to match filename words without the extension using regex?
我想匹配文件名中不带下划线 (_) 和文件扩展名等字符的单词。 例如,如果我有文件 image_one.jpg 和 image_two.png 那么我如何才能只匹配image one
和image two
? 我不确定如何排除下划线和.extension。
到目前为止,我有\w*_\w*
但它与包含下划线的文件名匹配,即image_one
和image_two
您的模式\w*_\w*
也可能匹配单个_
因为单词字符是可选的。
由于\w
也匹配下划线,因此您可以使用否定字符 class 将其从\w
中排除。 [^\W_]
。
要获取这两个值,您可以使用 2 个捕获组,如果模式只能在字符串末尾匹配,您可以在末尾添加$
。
([^\W_]+)_([^\W_]+)\.\w+
解释
([^\W_]+)
捕获组 1,匹配 1+ 次除_
之外的单词字符_
匹配下划线([^\W_]+)
捕获组 2,与组 1 相同\.\w+
匹配一个.
和 1+ 字字符(或\.(?:jpg|png)
更准确)查看正则表达式演示
const regex = /([^\W_]+)_([^\W_]+)\.\w+/; [ "image_one.jpg", "image_two.png" ].forEach(s => console.log(s.match(regex).slice(1)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.