我有一个正则表达式,但它并不像我想要的那样工作
page[0-9]*
/pages/search.aspx?pageno=3&pg=232323&hdhdhd/page73733/xyz
在上面的示例中,我唯一想要匹配的是page73733
。但我的正则表达式与/pages
中的页面匹配,它与pageno = 3
我还尝试了page[0-9].*
,然后它与page73733
匹配,但它也匹配后面的所有内容,以便它实际匹配page73733/xyz
page[0-9].*[^a-zA-Z&?/=]
这似乎做了我想要的,但这似乎也是一种丑陋的方式。另外,如果我有/page123/xyz/page456
这样的东西,它将匹配整个字符串。
那么有更好的方法吗?我想匹配字符串页面后跟任意数量的数字,如果有任何数字,它应该停止。
答案 0 :(得分:4)
*
表示出现0次或更多次。 +
表示发生一次或多次。
page[0-9]+
应该有用。
答案 1 :(得分:2)
page[0-9]*
将匹配页面,后跟零个或多个数字。你想要的是:
page[0-9]+
哪个匹配页,后跟一个或多个号码。
答案 2 :(得分:1)
正则表达式page[0-9]*
将匹配[0-9]
0次或更多次。 +
会匹配一次或多次,?
会匹配0或1次。 ?+*
的等效方法如下:
?={0,1}
*={0,}
+={1,}
如果您想匹配日期\\d{4}(-\\d{1,2}){2}
,这可能会有所帮助2013-5-31
-
也就是说,由此产生的Regex针对您的特定问题:
page\\d+
page\\d{1,}
page[0-9]+
page[0-9]{1,}
在您的示例"/page123/xyz/page456"
中,您可能希望匹配所有匹配项,因此请不要忘记g
或global
修饰符。
答案 3 :(得分:1)
你几乎得到了它。只需使用+代替*,因为这会强制匹配后面有数字。
键入该表达式的另一种方法是
/page[0-9]+
注意/,这会有所帮助,因为没有它你可能会得到类似“notApage123”的匹配
答案 4 :(得分:-2)
如果我正确理解您的问题,您只需要将$
添加到原始正则表达式,以指定在page
之后您希望字符串结束。所以正则表达式将是
page[0-9]*$
此外,这将匹配以page
结尾的字符串,如果您只想要以页面结尾的字符串后跟任何数字,请使用此正则表达式
page[0-9]+$