gpt4 book ai didi

c# - 正则表达式提取单引号或双引号外的字符串

转载 作者:行者123 更新时间:2023-11-30 12:29:16 25 4
gpt4 key购买 nike

我目前正在使用 asp.net 和 C# 构建网页。我在解析用户提供的字符串时遇到问题。例如,用户提供了以下字符串,我需要提取单引号或双引号之外的单词。有人可以帮我解决这个问题吗?预先感谢您的帮助。

"we run" live "experiments" inside and outside 'a lab'

使用正则表达式的预期结果是:

live

inside

and

outside

最佳答案

这样就可以了。所有匹配组 'unquote' 匹配你想要的:

(?<unquote>[^"'\s]+)|(?:["][^"]+?["])|(?:['][^']+?['])

C#测试代码:

 var matches = Regex.Matches( @"""we run"" live ""experiments"" inside and outside 'a lab'", @"(?<unquote>[^""'\s]+)|(?:[""][^""]+?[""])|(?:['][^']+?['])" );
foreach( Match match in matches )
{
if( match.Groups["unquote"].Success )
{
Console.WriteLine( match.Groups["unquote"].Value.Trim() );
}
}

输出:

live

inside

and

outside

哪里:

  • <unquote>意味着放入一个名为 unquote 的组
  • ^"'\s表示匹配所有不是双引号或空格的内容。
  • (?:["][^"]+?["])意味着将引号内的所有内容匹配到下一个引号。注意 +?这样它就不会贪婪并且 ?: 这样就不会捕获该组。单引号也一样。

这将适用于空字符串 ""和单引号嵌套在双引号中的字符串。你想忽略撇号吗?如果是,那么您将需要稍微扩展正则表达式以允许 ' 前面没有空格:

(?<unquote>(?>[^"\s](?<!\s[']))+)|(?:["][^"]+?["])|(?:['][^']+?['])

祝您的实时实验顺利。

关于c# - 正则表达式提取单引号或双引号外的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18937896/

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