我必须从网址中提取产品的ID值。
这是SEO友好(网址路由)。
网址可以
http://www.example.com/{param0}/{param1}/123/{param2}/{paramN}
或者
http://localhost:6847/{param0}/{param1}/123/{param2}/{paramN}
对于第一个网址没有问题。 但是对于第二个我想要仅提取123或(ID)&lt ;-(这是一个整数)。
我知道如果我只想提取我可以使用的数字
[0-9]+
但我如何告诉regengine如何从url获取所有数字数据,除了可能有的数字
:
之前。 我用:
((!:)[0-9]+)
不正确。 每个建议都很好::)
谢谢。
答案 0 :(得分:1)
需要了解更多关于在示例中界定123
的内容的信息。
从表面上看,(?<!:)[0-9]+
会发现第一个数字之前没有':'
修改可能为了更准确,这个(?<!:\d+)[0-9]+
会更好
请注意,如果.NET允许可变长度的后视(我认为它确实如此)。
对于固定长度的后视(PCRE),这样的事情可能有效:(?<![:\d])[0-9]+
Edit2
@ Sanosay-在考虑.NET类型的外观之后,上面的正则表达式需要稍微改变一下。
它应该是(?<!:\d*)[0-9]+
。那是因为在': 1234
'中,1
将满足断言。
希望你认为这是事实。我为两个正则表达式做了一个测试用例
@"(?<!:\d*)[0-9]+"
@"(?<![:\d])[0-9]+"
满足条件。
ideone C#代码的链接在这里:http://ideone.com/tLn2j