这里我使用了下面提到的代码。
MatchCollection matches = Regex.Matches(cellData, @"(^\[.*\]$|^\[.*\]_[0-9]*$)");
唯一没有这种模式的是它没有将分号和加号与主字符串分开。
示例字符串是
[dbServer];[ciDBNAME];[dbLogin];[dbPasswd] AND [SIM_ErrorFound@1]_+[@IterationCount]
我正在尝试提取
[dbServer]
[ciDBNAME]
[dbLogin]
[dbPasswd]
[SIM_ErrorFound@1]
[@IterationCount]
来自字符串。
答案 0 :(得分:1)
从[dbServer];[ciDBNAME];[dbLogin];[dbPasswd] AND [SIM_ErrorFound@1]_+[@IterationCount]
中提取方括号中的内容(这是我假设您正在尝试做的事情),
正则表达式(我没有引用它)应该是
\[([^\]]*)\]
您不应该使用^
和$
,因为您对字符串的开头和结尾不感兴趣。括号将捕获方括号内的零个或多个字符的每个实例。
如果您想更详细地了解您在括号中捕获的内容,则需要将[^\]
更改为其他内容。
答案 1 :(得分:1)
您的正则表达式 - ssl pinning
- 匹配以(^\[.*\]$|^\[.*\]_[0-9]*$)
开头的任何完整字符串,然后包含除换行符之外的零个或多个字符,并以[
结束(]
)或\]$
后跟0+位数(_
)。您也可以将模式编写为_[0-9]*$
,它的工作方式也相同。
但是,您需要匹配较大字符串中的多个子字符串。因此,您应该删除^\[.*](?:_[0-9]*)?$
和^
锚点并重试。然后,您会发现$
过于贪婪,并且从第一个.*
到最后一个[
匹配。要解决此问题,最好使用否定字符类解决方案。例如。您可以使用与]
和[^][]*
以外的0 +字符匹配的[
。
编辑:似乎你只需要在方括号内得到文字。
您需要使用捕获组,在您需要获取的模式部分周围使用一对未转义的括号,然后按组ID访问该值(未命名的组从1开始编号)从左到右):
]