【问题标题】:regex capturing only page number正则表达式仅捕获页码
【发布时间】:2018-02-01 12:42:18
【问题描述】:

我想编写以下正则表达式来仅捕获页码而不是“/p2”。 如果没有设置页面,我还需要捕获第一组。

谁能引导我纠正结果。谢谢

~(.*)/c(?:(/p[0-9]+))~is

Match 1
Full match  0-34    `http://localhost:8080/clothes/c/p2`
Group 1.    0-29    `http://localhost:8080/clothes`
Group 2.    31-34   `/p2`

https://regex101.com/r/prgF1H/2

【问题讨论】:

  • 使用(.*)/c(?:/p([0-9]+))
  • “如果没有设置页面”是什么意思?

标签: regex .htaccess


【解决方案1】:
(.*)/c(?:/(p[0-9]+))?

将正斜杠移出捕获组,并使页码可选(因此匹配整个字符串)

here

编辑

如果您的意思是“仅页码”位而不是“/p2”,您会得到“2”:

(.*)/c(?:/p([0-9]+))?

【讨论】:

  • 感谢您的回答。这是完美的。你介意照顾这个正则表达式吗?怎么了regex101.com/r/prgF1H/4
  • @Kovi,如果你想让它只匹配带有页码的行:Try this,如果不是,那么你将不得不向我解释你的问题更多
  • 好的,我来给你解释一下。我有 3 个组,如果它们是集合,我想捕获它们。基本上第一组是类别,第二组是过滤器,最后一组是页面。如果没有过滤器和页面集,我只想捕获第一组“衣服”。如果设置了类别和页面,我想捕获类别和页面。如果两者都是集合,我想捕捉所有的 grouos。见这里regex101.com/r/9F8m0Q/2
  • @Kovi 所以也许更多 like this ^(.*)/c(?:/(?:(.*?))?/?(p[0-9]+)?)?$
  • 是的。这就是我要的。十分感谢!我会试着弄清楚你在那里做了什么:D 谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多