Python正则表达式匹配'category /'或'categories /'?

时间:2014-07-09 07:45:09

标签: python regex

我正在使用^category/|categories/$

为什么^categor[y|ies]/$不起作用?

1 个答案:

答案 0 :(得分:5)

你的正则表达式应该是,

^categor(?:y|ies)/$

使用非捕获组而不是字符类。

DEMO

字符类中的任何特殊字符都被视为文字除外。 [y|ies]匹配单个字符,无论是y还是|还是i还是e还是s

>>> import re
>>> str = """
... category/
... categories/
... categories
... category"""
>>> m = re.findall(r'^categor(?:y|ies)/$', str, re.MULTILINE)
>>> m
['category/', 'categories/']

<强>解释

  • ^断言我们在行的开头。
  • categor匹配字符串categor
  • (?:y|ies)上述字符串categor必须遵循yies。在正则表达式(?:)中称为非捕获组。它只进行不捕获的匹配操作。
  • /匹配文字正斜杠/
  • $行尾。