Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 必须将单个字符串传递给多个正则表达式模式,在匹配时,我需要匹配的值_C#_.net_Regex - Fatal编程技术网

C# 必须将单个字符串传递给多个正则表达式模式,在匹配时,我需要匹配的值

C# 必须将单个字符串传递给多个正则表达式模式,在匹配时,我需要匹配的值,c#,.net,regex,C#,.net,Regex,假设我有三个正则表达式存储在3个变量中,如下所示 string regex1 = @"Regex 1 Pattern"; string regex2 = @"Regex 2 Pattern"; string regex3 = @"Regex 3 Pattern"; 现在我通过一个文本框传递了一个字符串来进行测试,如何将它与正则表达式声明的值进行比较,以及如何在匹配的正则表达式上检索它的值 根据单个模式进行比较,代码如下: Regex r = new Regex(regex1, R

假设我有三个正则表达式存储在3个变量中,如下所示

  string regex1 = @"Regex 1 Pattern";
  string regex2 = @"Regex 2 Pattern";
  string regex3 = @"Regex 3 Pattern";
现在我通过一个文本框传递了一个字符串来进行测试,如何将它与正则表达式声明的值进行比较,以及如何在匹配的正则表达式上检索它的值

根据单个模式进行比较,代码如下:

 Regex r = new Regex(regex1, RegexOptions.IgnoreCase);

但是我想让我的字符串遍历所有声明的模式。

您需要创建一个模式列表(不限于3个),然后,您就可以检查输入字符串是否匹配

var patterns = new string[] { @"Regex 1 Pattern", @"Regex 2 Pattern", @"Regex 3 Pattern" };
var rx = new Regex(string.Join("|", patterns), RegexOptions.IgnoreCase);

是什么阻止您使用所需的所有模式创建多个
Regex
实例,逐个应用所有实例并获得结果?是否需要为每个模式返回一个特殊警告?如果没有,则可以使用“|”连接它们,并且只测试字符串一次。这样:
Regex r=newregex(regex1+“|”+regex2+“|”+regex3,RegexOptions.IgnoreCase)。或者创建一个字符串列表/数组,然后使用
string.Join()
@AndyKorneyev基本上这是一个搜索功能,我必须根据用户在搜索栏中输入的数据类型提取关键字,因此,它可以根据关键字进一步过滤集合中的结果。@mudasirshato:这无助于我理解创建几个正则表达式并分别运行它们的问题所在。目前,您的问题似乎是您想要运行三个regex,并且没有任何明显的东西可以阻止您使用三种不同的模式三次创建一个regex对象。您是否受到这个问题中没有的东西的限制(例如,您将正则表达式传递给一个只接受一个的外部不可更改的东西)?使用三个正则表达式,你可以在三个步骤中提取关键词,然后在我认为……我编辑了你的标题之后组合这些关键词。请参阅“”,其中的共识是“不,他们不应该”。