gpt4 book ai didi

c# - 正则表达式查找字符串中所有出现的模式

转载 作者:行者123 更新时间:2023-11-30 14:32:54 26 4
gpt4 key购买 nike

我在查找字符串中某个模式的所有出现时遇到了问题。

检查这个字符串:

string msg= "=?windows-1258?B?UkU6IFRyIDogUGxhbiBkZSBjb250aW51aXTpIGQnYWN0aXZpdOkgZGVz?= =?windows-1258?B?IHNlcnZldXJzIFdlYiBHb1ZveWFnZXN=?=";

我想返回 2 次出现(以便稍后解码它们):

=?windows-1258?B?UkU6IFRyIDogUGxhbiBkZSBjb250aW51aXTpIGQnYWN0aXZpdOkgZGVz?=

=?windows-1258?B?IHNlcnZldXJzIFdlYiBHb1ZveWFnZXN=?="

使用以下正则表达式代码,它只返回 1 次出现:完整字符串。

var charSetOccurences = new Regex(@"=\?.*\?B\?.*\?=", RegexOptions.IgnoreCase);
var charSetMatches = charSetOccurences.Matches(input);
foreach (Match match in charSetMatches)
{
charSet = match.Groups[0].Value.Replace("=?", "").Replace("?B?", "").Replace("?b?", "");
}

你知道我错过了什么吗?

最佳答案

regexp 解析器看到 .* 字符序列时,它会匹配直到字符串末尾的所有内容,然后逐个字符返回(贪婪匹配)。因此,为避免该问题,您可以使用非贪婪匹配或明确定义可以出现在字符串中的字符。

"=\?[a-zA-Z0-9?=-]*\?B\?[a-zA-Z0-9?=-]*\?="

关于c# - 正则表达式查找字符串中所有出现的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17578724/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com