我使用正则表达式相当新,我还不完全清楚所有内容的语法。基本上我被困在一些我所拥有的代码上:
if(@"\d{2,}\s"+string == Path.GetFileNameWithoutExtension(dir))
{
do stuff
}
我的问题是它不会匹配任何东西。我基本上有一堆文件正在搜索,它们都有2个数字和一个空格,然后是用户正在搜索的名称。我可以像这样组合正则表达式+字符串,还是我的正则表达式/语句的问题?为了清楚起见,当我实际从文件中删除两位数和空格时,它将匹配。如果问题很明显,我很抱歉,我只玩了几天的正则表达式......
答案 0 :(得分:3)
您的if
语句未尝试匹配正则表达式模式,它只是比较两个字符串。这就是Regex.IsMatch
方法的用途。此外,您可能希望使用Regex.Escape
将正则表达式模式与任意字符串组合。
试试这个:
using System.Text.RegularExpressions;
...
var pattern = @"\d{2,}\s" + Regex.Escape(myString);
var fileName = Path.GetFileNameWithoutExtension(dir);
if (Regex.IsMatch(fileName, pattern))
{
// do stuff
}
答案 1 :(得分:0)
你实际上不应该在该实例中使用正则表达式,事实上这可能会使目标过于复杂。
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string [] file = Directory.GetFiles(path, @"11_*.txt", SearchOption.AllDirectories);
foreach(string f in file)
{
// Do Something.
}
如果您的完全耳机使用正则表达式,您可以按照以下方式执行更多操作:
using System.Text.RegularExpressions;
...
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var file = Regex.IsMatch(path, @"\d{2,}\2");
if(file == true)
{
// Do Something
}
这是使用正则表达式的一种方法,使用Linq
可以更强大。我强烈建议在MSDN上研究这个,它有一些可靠的资源。