C# 如何仅使用正则表达式执行以下操作?

C# 如何仅使用正则表达式执行以下操作?,c#,regex,C#,Regex,假设我有以下字符串 [id={somecomplexuniquestring}test1], [id={somecomplexuniquestring}test2],[id={somecomplexuniquestring}test3], [id={somecomplexuniquestring}test4],[id={somecomplexuniquestring}test5], [id={somecomplexuniquestring}test6],[id={somecomplexuniqu

假设我有以下字符串

[id={somecomplexuniquestring}test1],
[id={somecomplexuniquestring}test2],[id={somecomplexuniquestring}test3],
[id={somecomplexuniquestring}test4],[id={somecomplexuniquestring}test5],
[id={somecomplexuniquestring}test6],[id={somecomplexuniquestring}test7],
[id={somecomplexuniquestring}test8],[id={somecomplexuniquestring}test9]
是否有一种方法仅使用正则表达式就可以获得以下结果
[id={somecomplexuniquestring}test6]

{somecomplexuniquestring}
是无法在正则表达式中使用的未知字符串

例如,以下内容将不起作用:“[id=[\s\s]+?test6]”因为它从第一个id开始。

这不起作用

\[id={.*?}test6\]
这不管用

\[id={.*?}test6\]

这完全取决于somecomplexuniquestring的限制。例如,如果您保证它们不包含任何[或]字符,您可以使用这个简单的:

"\[[^\[\]]*test6\]"
类似地,如果它可以包含方括号但没有大括号,则可以执行类似操作:

"\[id={[^{}]*}test6\]"

但是,如果您没有这样的保证,并且有某种转义系统用于在该字符串中包含{}或[],那么您需要让我们知道如何正确回答。

这完全取决于某些ComplexUniqueString的限制。例如,如果您保证它们不包含任何[或]字符,您可以使用这个简单的:

"\[[^\[\]]*test6\]"
类似地,如果它可以包含方括号但没有大括号,则可以执行类似操作:

"\[id={[^{}]*}test6\]"

但是,如果您没有这样的保证,并且有某种转义系统用于在该字符串中包含{}或[],那么您需要让我们知道如何正确回答。

使用RegEx是最佳解决方案吗?你已经标记了C#,我也会

variableWithString.Split(",").Any(x => x.Contains("test6"));
为您提供匹配项,或

result = variableWithString.Split(",").Where(x => x.Contains("test6")); 

给你你想要的匹配值?

使用正则表达式是最好的解决方案吗?你已经标记了C#,我也会

variableWithString.Split(",").Any(x => x.Contains("test6"));
为您提供匹配项,或

result = variableWithString.Split(",").Where(x => x.Contains("test6")); 

为您提供要查找的匹配值?

您可以使用以下模式:

@"\[[^]]*]"
如果需要特定的测试编号,可以执行以下操作:

@"\[id={[^}]*}test6]"

您可以使用以下模式:

@"\[[^]]*]"
如果需要特定的测试编号,可以执行以下操作:

@"\[id={[^}]*}test6]"

我用正则表达式回答了这个问题,但我不得不同意,你的回答在我看来更优雅+1 No regex不是最好的解决方案,但这是一个我不知道如何解决的问题。我接受了John的回答,因为它回答了我的问题,如果需要,也可以在VBA中实现。不过我会在.NET上使用它。我用正则表达式回答了这个问题,但我不得不同意,你的答案对我来说似乎更优雅+1 No regex不是最好的解决方案,但这是一个我不知道如何解决的问题。我接受了John的回答,因为它回答了我的问题,如果需要,也可以在VBA中实现。不过我会在.NET上使用它。谢谢,我使用了
\[id=.*test6\]
,因为大括号只是一个占位符。谢谢,我使用了
\[id=.*test6\]
,因为大括号只是一个占位符。