正则表达式从标题中删除文章 - the,an,a

时间:2009-11-10 01:08:45

标签: regex

我需要一个与歌曲标题的第一个字母相匹配的正则表达式,而没有像“the”,“an”,“a”这样的文章。我正在为Mediatomb编写一个使用javascript的自定义导入脚本。我需要能够将歌曲放在字母文件夹中。

示例:“Panama.mp3”将位于文件夹“P”中,“The Gambler.mp3”将位于文件夹“G”中

5 个答案:

答案 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)

  1. 第一选择""从字面上匹配字符(案例 敏感)
  2. 第二种选择" a"匹配字符(字母区域敏感)
  3. 第三种选择""匹配字符(字母区分大小)

    • 字面匹配字符(区分大小写)

    • 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)

    • 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 = "";
}