这感觉就像一个简单的请求,但我不知道这里发生了什么,并且已经和不同的RegEx测试人员搞混了一段时间了。
我的RegEx模式:\b(?=<GTOL-[A-Z]*>)
如果有关系,我在代码(C#)中调用的命令:Regex.Split(Text, @"\b(?=<GTOL-[A-Z]*>)").ToList();
将成功拆分的字符串: <GTOL-POSI>.010<MOD-MMC>B-C<GTOL-POSI>.002<MOD-FMC>;返回:<GTOL-POSI>.010<MOD-MMC>B-C;<GTOL-POSI>.002<MOD-FMC>
不会按预期拆分的字符串: <GTOL-POSI><MOD-DIAM>.004<MOD-MMC>HC<MOD-MMC><GTOL-POSI>.030<MOD-MMC>D-E<MOD-FMC>;应该返回(但不返回):<GTOL-POSI><MOD-DIAM>.004<MOD-MMC>HC<MOD-MMC>;<GTOL-POSI>.030<MOD-MMC>D-E<MOD-FMC>
另一个不会按预期拆分的字符串: <GTOL-POSI><MOD-DIAM>.005<MOD-MMC>AD-E<MOD-MMC><GTOL-PERP>.001A;应该返回(但不返回):<GTOL-POSI><MOD-DIAM>.005<MOD-MMC>AD-E<MOD-MMC>;<GTOL-PERP>.001A
发布于 2022-08-15 20:28:43
在><之间没有单词边界,而且由于似乎至少有一个或更多大写字符,所以量词可以是+来匹配1次或更多次。
如果您不想在字符串的开头分割,在结果列表中创建一个空条目,则可以使用负查找(?<!^\s*)断言在字符串开始后左边没有可选的空格字符。
(?<!^\s*)(?=<GTOL-[A-Z]*>)看一个regex .NET演示。
https://stackoverflow.com/questions/73366000
复制相似问题