我需要一个与歌曲标题的第一个字母相匹配的正则表达式,而没有像“the”,“an”,“a”这样的文章。我正在为Mediatomb编写一个使用javascript的自定义导入脚本。我需要能够将歌曲放在字母文件夹中。
示例:“Panama.mp3”将位于文件夹“P”中,“The Gambler.mp3”将位于文件夹“G”中
答案 0 :(得分:2)
不确定您使用的是什么样的正则表达式,但有:non-capture groups 你能够像这样使用它:
(?:(the |a |an ))([a-zA-Z])
捕获第3组,这应该始终是第一个字母(不包括“the,a,an,...”。
编辑:意味着要抓住SECOND小组的第一封信。还要确保运行此不区分大小写。并获得一个很好的正则表达式测试工具(我喜欢Expresso,但还有其他人)。
Edit2:做了一些改进;)
(?:(the|a|an) +)?([a-zA-Z0-9])
答案 1 :(得分:1)
Javascript示例 -
const regex = /(?:(the|a|an) +)/g;
const str = `the cat in the hat a hare `;
const subst = ` `;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
非捕获组(?:( the | a | an)+)
第一捕获组(| a | an)
第三种选择""匹配字符(字母区分大小)
字面匹配字符(区分大小写)
量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
g modifier:global。所有比赛(首场比赛后不返回)
答案 2 :(得分:1)
最适合我在javascript的电影名称列表中查找文章的那个是
/^(a |the |an )/gi
答案 3 :(得分:0)
感谢上面的回答,这就是我想出来的。如果有任何改进方法,请告诉我。
(?:(the |a |an ))*(\S{1})(\S*)
答案 4 :(得分:0)
var myregexp = /^(?:(?:the|a|an)\s+)?(\S)/i;
var match = myregexp.exec(subject);
if (match != null) {
result = match[1];
} else {
result = "";
}