C# 是否存在允许您传入包含正则表达式的字符串然后返回可能匹配项的.NET函数?

C# 是否存在允许您传入包含正则表达式的字符串然后返回可能匹配项的.NET函数?,c#,.net,regex,string,C#,.net,Regex,String,在我亲自研究这一点之前,是否已经有一个功能可以做到这一点: 我想传入一个包含文本和正则表达式标记的字符串,然后它返回它将在字符串中查找的所有可能匹配项 因此,将以下内容传递给该方法 abc|def|xyz 将在数组或集合中返回3个字符串: abc def xyz abc def xyz 因为正则表达式表示查找abc、def或xyz 我不希望它在另一个字符串或类似的字符串中搜索这个词,只需返回它可能进行的匹配 这是一个简单的例子,任何能为我做到这一点的事情,或者我应该自己开始写这个方法吗?根据你

在我亲自研究这一点之前,是否已经有一个功能可以做到这一点:

我想传入一个包含文本和正则表达式标记的字符串,然后它返回它将在字符串中查找的所有可能匹配项

因此,将以下内容传递给该方法

abc|def|xyz
将在数组或集合中返回3个字符串:

abc def xyz abc def xyz 因为正则表达式表示查找abc、def或xyz

我不希望它在另一个字符串或类似的字符串中搜索这个词,只需返回它可能进行的匹配


这是一个简单的例子,任何能为我做到这一点的事情,或者我应该自己开始写这个方法吗?

根据你的例子,用一个简单的正则表达式,它会起作用,但一旦你开始处理通配符和重复,它将不得不产生几乎无限的可能解决方案,在某些情况下,它甚至可能永远不会终止。

不,它不会:)

我也偶尔想要它。我很惊讶它竟然不存在!它将如何处理例如:“\d |\d”?@Blam:dfa正则表达式引擎会将其视为\d,并且只会产生10个可能的解决方案。您不难进行惰性评估,是吗?:)可以很容易地生成一个永远不会结束但仍然有用的
IEnumerable
。@Timwi:这永远不会返回所有可能的匹配项,因此它是非常无用的(作为问题的解决方案)。@Ieppie:问题的答案是.NET不提供这样的功能。然而,你的回答给出了一个推测性的似是而非的理由来解释为什么它不存在。@Ieppie:而且,我不知道一个尽可能接近的解决方案是“无用的”,没有一个解决方案比它更有用?@Timwi:你必须读迪克·格伦的解析书才能理解为什么。