我正在尝试创建正则表达式以匹配以下情况:
myFile.txt
或myFile(1).txt
但不要与此相符:
myFile WithSimilarName.txt
这是我的尝试:
@"({fileName}\(d+\)\.txt)|({fileName}.txt)"
您希望匹配具有fileName
的文件名,然后匹配以.txt
结尾的括号内的可选数字序列。
您的模式可以通过以下方式形成:
$@"{Regex.Escape(fileName)}(?:\(\d+\))?\.txt"
如果您需要整个字符串匹配,请在开头添加^
,最后添加$
(请参阅demo)。
由jex.im/regulex生成的可视图:
这里,
{Regex.Escape(fileName)}
- 将被插值的fileName
变量,所有特殊字符将使用Regex.Escape
进行转义(?:\(\d+\))?
- 可选序列:
\(
- 文字(
\d+
- 1+位数
\)
- 文字)
\.txt
- .txt
序列。