我需要这个正则表达式的帮助。我有许多文件名,格式为:
DataFile_en.dat
DataFile_de.dat
DataFile_es.dat
是DateFile_,后跟两个字符的语言代码。
我想编写一个正则表达式,该表达式匹配具有此模式的所有文件名但不包括英文名称(DataFile_en.dat)
我有这个模式来提取所有文件:
DataFile_\w{2}.dat
但我不知道如何编写模式以排除带有'en'作为语言代码的模式。正则表达式将在Python中使用。
答案 0 :(得分:8)
您可以使用否定前瞻。您可以找到有关here的更多信息。从本质上讲,它“向前看”并确保括号中的正则表达式不匹配。
DataFile_(?!en)\w{2}\.dat
请注意,您应该转义该期间,因为它会匹配任何字符。
答案 1 :(得分:6)
您可以使用否定前瞻。 (?!something)
表示“失败,除非您可以避免匹配某些内容”。
DataFile_(?!en)\w{2}\.dat
答案 2 :(得分:1)
一种可能性是使用DataFile_(([^e].)|e[^n])).dat
,这仍然在正则表达式的经典“常规语言”限制范围内,但代价是可读性。