我正在 .NET 中对如下所示的字符串执行正则表达式匹配:
1;#Lists/General Discussion/Waffles Win
2;#Lists/General Discussion/Waffles Win/2_.000
3;#Lists/General Discussion/Waffles Win/3_.000
我需要匹配末尾不带数字的 URL 部分,这样我就得到了:
Lists/General Discussion/Waffles Win
这是我正在尝试的正则表达式:
(?:\d+;#)(?<url>.+)(?:/\d+_.\d+)*
问题是最后一组被纳入中间组比赛的一部分。我也尝试过在末尾没有 * ,但只有上面的第一个字符串匹配,而不是其余的。
我启用了多行选项。有任何想法吗?
一些不同的选择:
@"^\d+;#([^/]+(?:/[^/]+)*?)(?:/\d+_\.\d+)?$"
这会匹配尽可能少的路径段,后跟可选的最后部分和行尾。
@"^\d+;#([^/]+(?:/(?!\d+_\.\d+$)[^/]+)*)"
这会匹配尽可能多的路径段,只要它不是行尾的数字部分。
@"^\d+;#(.*?)(?:/\d+_\.\d+)?$"
这会匹配尽可能少的字符,后跟可选的最后部分和行尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)