【发布时间】:2011-05-23 02:45:44
【问题描述】:
我需要过滤文件列表。其中一些是 csv 文件,其中一些附加了控制标记“.cntl”。
示例:file1.csv、file1.csv.cntl
我想设置一个正则表达式来检查文件是否包含“csv”而不是“cntl”。现在我有这个了。
csv(?!cntl)
这不起作用。什么是合适的正则表达式?
PS。这都是在 C# 中完成的。
【问题讨论】:
标签: c# regex regex-negation
我需要过滤文件列表。其中一些是 csv 文件,其中一些附加了控制标记“.cntl”。
示例:file1.csv、file1.csv.cntl
我想设置一个正则表达式来检查文件是否包含“csv”而不是“cntl”。现在我有这个了。
csv(?!cntl)
这不起作用。什么是合适的正则表达式?
PS。这都是在 C# 中完成的。
【问题讨论】:
标签: c# regex regex-negation
以下是你想要的模式。
@"csv(?!\.cntl)"
但是,检查不是更容易吗:
if (string.EndsWith("cntl"))
使用正则表达式不必要地复杂。
【讨论】:
@"csv!(?\.cntl)" 是一个有效的正则表达式。
(?!<expr>)。如果你移动 ! 应该没问题(快速测试似乎证实了这一点)。
您的正则表达式应检查文件是否以 .csv 结尾
\.csv$
请记住,csv 可以包含在文件名的其他位置。
【讨论】:
string.EndsWith() 比一开始就使用正则表达式要简单得多。
这应该可行:
csv(?!.*cntl)
【讨论】: