gpt4 book ai didi

c# regex - 替代文本

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:28 25 4
gpt4 key购买 nike

我想获取 familyId,在 compar/produ.aspx 之间有一个替代方案。我使用正则表达式:

\/selector/(compar.+|produ.+).aspx\?famiid=(\d{2})\&produ=\d{2

匹配:/selector/comparioPage.aspx?famiid=32&produ=40和/selector/productCust.aspx?famiid=32&produ=40

我得到 familyId 作为第二个匹配项。

实际上我必须使用 () 来使替代成为可能(比较或生产)。问题是我不想在匹配组中获得比较或产品。

但是,如果我删除 (),则正则表达式的行为会有所不同:/selector/不是选择的一部分 :(

我怎样才能去掉 () 而只得到 familyId?

谢谢

最佳答案

您可以指定 non-capturing group通过使用此语法:(?:...)

所以你的模式变成了(?:compar.+|produ.+)

不清楚您为什么不使用页面的全名,除非存在具有相同前缀的其他页面。如果是这样,更好的模式可能是:

@"/selector/(?:compar|produ)[^.]+\.aspx\?famiid=(\d+)&produ=\d+";

通过使用 [^.]+ 它将匹配除句点之外的所有内容。另外,为什么将数字限制为两位?如果有一个或多个怎么办? \d+ 更灵活,除非您打算将其限制为长度为 2 的 ID。

关于c# regex - 替代文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6256959/

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