假设我有以下字符串
[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=[sS]+?test6]"
,因为它从第一个id开始。
使用RegEx是最佳解决方案吗?你已经标记了C#,也会
variableWithString.Split(",").Any(x => x.Contains("test6"));
给你现有的匹配,或者
result = variableWithString.Split(",").Where(x => x.Contains("test6"));
给你想要的匹配值?
这不起作用??
[id={.*?}test6]
这完全取决于somecomplexuniquestring的限制。例如,如果你保证它们不包含任何[或]字符,你可以使用这个简单的:
"[[^[]]*test6]"
类似地,如果它可以包含方括号,但不包含大括号,则可以执行类似的操作:
"[id={[^{}]*}test6]"
但是,如果您没有这样的保证,并且有某种转义系统可以在该字符串中包含{}或[],那么您需要让我们知道这是如何正确回答的。
您可以使用以下模式:
@"[[^]]*]"
如果你想要一个特定的测试编号,你可以这样做:
@"[id={[^}]*}test6]"