说我有以下字符串
[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开始。
答案 0 :(得分:3)
使用RegEx是最佳解决方案吗?你已经标记了C#,所以
variableWithString.Split(",").Any(x => x.Contains("test6"));
给你存在的匹配,或者
result = variableWithString.Split(",").Where(x => x.Contains("test6"));
给你你想要的比赛价值?
答案 1 :(得分:2)
这不起作用??
\[id={.*?}test6\]
答案 2 :(得分:1)
这完全取决于somecomplexuniquestring的限制。例如,如果您保证它们不包含任何[或]字符,您可以使用这个简单的字符:
"\[[^\[\]]*test6\]"
同样,如果它可以包含方括号但没有花括号,则可以执行类似的操作:
"\[id={[^{}]*}test6\]"
但是,如果你没有这样的保证,并且有一些转义系统可以在该字符串中加入{}或[],那么你需要告诉我们如何正确回答。
答案 3 :(得分:0)
您可以使用此模式:
@"\[[^]]*]"
如果您需要特定的测试编号,可以执行以下操作:
@"\[id={[^}]*}test6]"