如果value
包含digits
或匹配模式[lookup('key')]
,key
可以是任何字符串,我希望匹配。
在自己的作品中使用任何一种模式。例如,这有效。
string value = "[lookup('anykey')]";
if (!Regex.IsMatch(value, "^\\[(lookup)\\(.*\\)\\]$"))
{
Console.WriteLine("no match");
}
我无法同时使用单个正则表达式。
if (!Regex.IsMatch(value, "((\\d+) | (\\[(parameter)\\(.*\\)\\]))"))
{
Console.WriteLine("no match");
}
有什么想法吗?
答案 0 :(得分:0)
在你的正则表达式中你应该删除空格,试试:
答案 1 :(得分:0)
首先,无论何时我在c#中使用正则表达式,或者对于任何具有需要转义的字符的字符串,我都在字符串前加上“@”符号,这使我免于使用双重转义:)...我发现它
更容易现在回答,这是我认为你正在寻找的
static void Main(string[] args)
{
//string value = "[lookup('BlahBlah')]";
string value = "789897";
Match m = Regex.Match(value, @"((\d+)|(\[lookup\(\'([^\']+)\'\)\]))") ;
if (m.Success)
{
string num = m.Groups[2].Value;
string key = m.Groups[4].Value;
}
}
注意字符串是如何用'@'符号作为前缀的,我不必为符号\使用双转义符。 由于我们使用了这么多的括号,我们总共有5个组,如果你想要数字,那么你取第1组的值,如果你想要键,你取第4组的值。如果'num'是空的字符串,表示没有提供数字等... 希望有所帮助.....