正则表达式MatchCollection返回1而不是预期的3
本文关键字:MatchCollection 返回 正则表达式 | 更新日期: 2023-09-27 18:05:53
我在c#中有一个长字符串,它的格式如''server'value我一直在使用"(?<=''''').*(?='')"的正则表达式模式来从字符串中提取服务器。然而,有一个用例,其中多个''server'value'字符串可以链接在一起,像这样'''serverA'value1' + '''serverB'value2' + '''serverC'value3'
我正在尝试使用MatchCollection使用模式(?<=.'''')来提取所有服务器名称。*(>='')
第一个分组结构中的句点,用于解释'字符。我希望结果返回3次出现,但它只返回1。我的模式有什么问题吗?
string expression = "'''''serverA''value1' + '''''serverB''value2' + '''''serverC''value3'";
string pattern = @"(?<='''').*(?='')";
MatchCollection matches;
matches = Regex.Matches(expression, pattern);
你可以尝试下一个模式:
@"''''(.*?)''"
如果我得到,我得到的结果是这样的
serverA'value1' + '''serverB'value2' + '''serverC
你想要得到这些匹配:
serverA
serverB
serverC
可以使用惰性量化:
(?<='''').*?(?='')