正则表达式排除字符串中间的多个单词

时间:2018-06-21 06:01:43

标签: regex

我有一个正则表达式,可以很好地在一个句子中查找日期和三组缩写。

/^(\d{1,2}[/.-]\d{1,2}[/.-])(\d{2}|\d{4})(\s[A-Z]{2,5}\s[A-Z]{2,5}\s[A-Z]{2,5})$/;

工作示例 2018年5月28日SB GL PA

但是,有时在日期和首字母首字母之间可能会出现任意数量的多个单词,例如,2018年5月28日 ENG APP PROJ APPROVE ETC ETC SB GL PA

在正则表达式中,粗体字需要忽略,我认为前面的否定词可能会起作用,但需要帮助,因为日期和首字母之间可以有任意数量的字。

如果有人可以帮助您修改正则表达式,以便找到日期和三组缩写的匹配项,无论中间是什么字符串,我将不胜感激-谢谢

1 个答案:

答案 0 :(得分:1)

尝试使用正则表达式:^(\d{1,2}[\/.-]\d{1,2}[\/.-])(\d{4}|\d{2}).*?(\s[A-Z]{2,5}\s[A-Z]{2,5}\s[A-Z]{2,5})$

替换为:$1$2$3

Demo

说明:

$ 1具有第一个捕获组的值,在这种情况下为(\d{1,2}[\/.-]\d{1,2}[\/.-])

$ 2具有第二个捕获组的值,在这种情况下为(\d{4}|\d{2})

$ 3具有第三个捕获组的值,在这种情况下为(\s[A-Z]{2,5}\s[A-Z]{2,5}\s[A-Z]{2,5})