我有一个字符串,如下所示:
ABCD17; ABC18; ABCEF19; XYZ19; ABCDE
在MusicBee应用程序中,我尝试使用Regex替换功能将MATCHED项交换为空白,从而将上述字符串转换为
ABCEF19; XYZ19
即仅保留以“ 19”结尾的项目
元素可以是任何长度,它们可以以数字结尾或可以不以数字结尾。
以下表达式正确匹配以19结尾的项目
[^|;].*(?=19).{3}
但是,我显然需要与此相反(因为匹配的项然后被替换为空字符串),这不是(对我来说令人惊讶)
[^|;].*(?!19).{3}
答案 0 :(得分:1)
如果您只想保留以19结尾的项目,则一种选择可能是使用单词边界\b
并开始匹配1个以上大写字符A-Z。
使用负前瞻(?!19\b)
\b[A-Z]+(?!19\b)\d*\b;?
\b
字边界[A-Z]+
匹配1个以上大写字符A-Z(或使用[^\W\d]
匹配不带数字的单词字符)(?!19\b)
负向前进,断言右边的不是19 \d*
匹配0+个数字\b;?
字边界,并可选地匹配;