如何将正则表达式与字符串组合
本文关键字:字符串 组合 正则表达式 | 更新日期: 2023-09-27 17:54:34
我对使用regex相当陌生,而且我还不完全清楚所有的语法。基本上,我被困在一段代码上,我有:
if(@"'d{2,}'s"+string == Path.GetFileNameWithoutExtension(dir))
{
do stuff
}
我的问题是它不匹配任何东西。我基本上有一堆文件,它正在搜索它们都有2位数字和一个空格,然后是用户正在搜索的名称。我可以像那样组合regex +字符串吗?还是我的regex/语句有问题?为了清楚起见,当我从文件中删除两个数字和空格时,它将匹配。如果问题很明显,我很抱歉,我只玩了几天正则表达式…
您的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
}
在这种情况下,您实际上不应该使用正则表达式,事实上,这可能会使目标过于复杂。
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上研究一下,它有一些可靠的资源。