gpt4 book ai didi

c# - 简单的正则表达式迷惑

转载 作者:太空狗 更新时间:2023-10-30 01:05:39 25 4
gpt4 key购买 nike

我有一些形式的字符串

string strA = "Cmd:param1:'C:\\SomePath\SomeFileName.ext':param2";
string strB = "Cmd:'C:\\SomePath\SomeFileName.ext':param2:param3";

我想在“:”上拆分这个字符串,这样我就可以提取 N 个参数。一些参数可以包含文件路径 [如明确] 所示,我不想在括号内的 ':' 上拆分。我可以用正则表达式来做到这一点,但我很困惑如何让正则表达式仅在冒号两边都没有“'”的情况下拆分。

我尝试过

string regex = @"(?<!'):(?!')"; 
string regex = @"(?<!'(?=')):";

仅当左侧没有“'”且右侧没有“'”时才继续匹配(向后/向前看是负面的),但这仍然是在 'C:\SomePath\SomeFileName.分机'。

我如何修改此正则表达式以按我的要求执行?

感谢您的宝贵时间。


注意:我发现以下正则表达式有效。但是,我想知道是否有更好的方法?

string regex = @"(?<!.*'.*):|:(?!.*'.*)";

最佳答案

考虑这种方法:

var guid = Guid.NewGuid().ToString();
var r = Regex.Replace(strA, @"'.*'", m =>
{
return m.Value.Replace(":", guid);
})
.Split(':')
.Select(s => s.Replace(guid, ":"))
.ToList();

关于c# - 简单的正则表达式迷惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17946072/

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