【问题标题】:Regex to match URL ending with _F<XX>_C<XX>正则表达式匹配以 F<XX>C<XX> 结尾的 URL
【发布时间】:2015-10-10 19:24:01
【问题描述】:

在URL中,_F和C是固定的,XX是动态整数。

我已经尝试过这些模式:

^_F[\d+]_C[\d+]$

示例网址是:

_F23_C456

_F345_C1

我正在尝试在 django 的 urls.py 中匹配这个正则表达式。

【问题讨论】:

  • ^_F(\d+)_C(\d+)$ ?
  • 你有什么问题?
  • 方括号是什么 - 你希望它们做什么?

标签: python regex django django-urls


【解决方案1】:

您需要将+ 移出字符类并删除字符串开头的锚点^,或在其后插入.*

^.*_F\d+_C\d+$

或者

_F\d+_C\d+$

demo

在字符类中,+ 被视为字面意思,而不是量词,并且失去了 匹配 1 次或多次出现 的含义。并且您的正则表达式匹配字符串的开头、下划线、F、一位数字或+、下划线、C、一位数字或+ 和字符串的结尾。

【讨论】:

  • 这就是为什么我总是添加一个注释,将单个速记类放入字符类中不是一个好习惯。 [\d] 等于 \d,但是有很多人使用这样的字符类。
  • 我认为您需要删除 ^,因为 OP 正在尝试将“url ending_F&lt;XX&gt;_C&lt;XX&gt;”匹配。
  • 您可以使用正则表达式检查网站快速检查这一点,例如regexpal.com
  • @ChakerBenhamed:谢谢。固定。
  • @ChakerBenhamed: regexpal.com 非常适合检查 JS 正则表达式风格,我更喜欢 regex101.com 用于 Python 兼容的正则表达式。 (可选)debuggex.com 用于可视化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
相关资源
最近更新 更多