c#正则表达式.分裂(如何构建)

本文关键字:构建 何构建 正则表达式 分裂 | 更新日期: 2023-09-27 18:11:56

我正在尝试像这样分割行:

root.MediaClip.MaxGroups=10
root.MediaClip.M0.Name=Burglar_Alarm_Short
root.MediaClip.M0.Location=/etc/audioclips/Burglar_Alarm_Short_8bit_32kHz_mono_PCM-16bit-little.wav

但是我不知道如何在"="之后停止分裂。

这里的结果应该是:

root
MediaClip
MaxGroups=10
root
MediaClip
M0
Name=Burglar_Alarm_Short
root
MediaClip
M0
Location=/etc/audioclips/Burglar_Alarm_Short_8bit_32kHz_mono_PCM-16bit-little.wav

问题在于以文件扩展名结尾的行。但是,在"="到达之后,就不需要额外的分割了。

c#正则表达式.分裂(如何构建)

您可以使用基于regex的分割,仅分割与=以外的任何字符后面的点,然后是=或字符串结束,而不是前面有=:

(?<=^[^=]*)'.(?=[^=]*(?:=|$))

参见regex演示。

(?<=^[^=]*)是一个正向后看,要求点出现在字符串的开始(^)之后,后面跟着0+字符(=除外),(?=[^=]*(?:=|$)正向后看还要求=或字符串的结束(见(?:=|$)非捕获组)在0+字符(=除外)之后。

在c#:

var chunks = Regex.Split(str, @"(?<=^[^=]*)'.(?=[^=]*(?:=|$))");