3

我需要这个正则表达式的帮助。我有许多格式为:

DataFile_en.dat
DataFile_de.dat
DataFile_es.dat

它是 DateFile_ 后跟两个字符的语言代码。

我想编写一个正则表达式来匹配所有具有此模式的文件名,但不包括英文(DataFile_en.dat)

我有这个模式来提取所有文件:

DataFile_\w{2}.dat

但我不知道如何编写模式以排除以“en”作为语言代码的模式。正则表达式将在 Python 中使用。

4

3 回答 3

9

您可以使用负前瞻。您可以在此处找到有关内容的更多信息。本质上,它“向前看”并确保括号中的正则表达式不匹配。

DataFile_(?!en)\w{2}\.dat

请注意,您应该转义该句点,因为它将匹配任何字符。

于 2013-08-06T13:49:11.923 回答
6

您可以使用负前瞻。 (?!something)意思是“失败,除非你能避免匹配某些东西”。

DataFile_(?!en)\w{2}\.dat
于 2013-08-06T13:49:19.953 回答
1

一种可能性是使用DataFile_(([^e].)|e[^n])).dat,这保持在正则表达式的经典“常规语言”限制内,但以牺牲一些可读性为代价。

于 2013-08-06T14:54:26.293 回答