如何解决c#正则表达式-替代文本
| 我想获取familyId,并且在compar / produ.aspx之间还有另一种选择。我使用正则表达式: \\ /选择器/(比较+ |产品+)。aspx \\?famiid =(\\ d {2})\\&produ = \\ d {2} 符合: /selector/comparioPage.aspx?famiid=32&produ=40 和 /selector/productCust.aspx?famiid=32&produ=40 然后我获得了familyId作为第二个匹配项。 实际上,我必须使用()使替代成为可能(比较或生产)。问题是我不想在比赛组中获得比较或产品。 但是,如果删除(),则正则表达式的行为会有所不同:/ selector /不是选择的一部分:( 如何摆脱()并仅获取familyId? 谢谢解决方法
您可以使用以下语法指定一个非捕获组:
(?:...)
所以你的模式变成(?:compar.+|produ.+)
不清楚为什么不使用页面的全名,除非存在其他具有相同前缀的页面。如果是这样,更好的模式可能是:
@\"/selector/(?:compar|produ)[^.]+\\.aspx\\?famiid=(\\d+)&produ=\\d+\";
通过使用[^.]+
,它将匹配除句号以外的所有内容。另外,为什么将数字限制为两位呢?如果有一个或多个怎么办? ѭ4intended更具灵活性,除非您打算将其限制为长度为2的ID。
, 为什么要摆脱它们?只需参加第二个比赛组,否则您可以使用命名比赛组,如下所示:
\\/selector/(?<pageName>compar.+|produ.+).aspx\\?famiid=(?<familyId>\\d{2})\\&produ=\\d{2}
返回的匹配组可以通过名称访问,例如groups [\“ familyId \”]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。