C# 选择包含部分关键字的引号之间的所有内容

C# 选择包含部分关键字的引号之间的所有内容,c#,regex,C#,Regex,我想检索与部分关键字匹配的引号之间的完整字符串 假设我有一个关键字(即example-a),它是目录结构的一部分(即“/tutorial/example/example-a/”) 我尝试了“(.*?”,它返回示例输入中引号之间的所有字符串实例。我不喜欢迭代MatchCollection来查找它是否包含目标关键字,因为我当前的匹配大约是1700+。我可以将MatchCollection强制转换到一个列表中,然后询问捕获组是否包含关键字,目前是否有效 因此,我的期望是,对于输入“/tutorial/

我想检索与部分关键字匹配的引号之间的完整字符串

假设我有一个关键字(即
example-a
),它是目录结构的一部分(即
“/tutorial/example/example-a/”

我尝试了
“(.*?”
,它返回示例输入中引号之间的所有字符串实例。我不喜欢迭代
MatchCollection
来查找它是否包含目标关键字,因为我当前的匹配大约是1700+。我可以将
MatchCollection
强制转换到一个列表中,然后询问捕获组是否包含关键字,目前是否有效

因此,我的期望是,对于输入
“/tutorial/example/example-a/”
,我可以传递关键字的任何字符串,在本例中是
example-a
,并返回引号
/tutorial/example/example-a/
内的值


有没有办法在一个正则表达式中实现这一点?或者是一种更好的方法来实现我想要的结果?

您可以利用Regex“lookeahead”,例如在模式中

"([^"]*(?=example-a)[^"]*)"
我们匹配一个双引号,后跟除结束双引号以外的任何内容,但是部分
(?=example-a)
(肯定的lookeahad断言)告诉我们只有在
前面找到
example-a
时才继续匹配“
与结束引号匹配。这称为零长度断言,因为它不向匹配的字符添加任何内容,但可以控制是否匹配<代码>(和
在引号旁边捕获其中的零件

string.Split(文本、引号)?,