Python Regex:匹配特定的字符串,空格或昏迷

时间:2016-04-26 18:13:33

标签: python regex optional

我对正则表达式很新,并且对我的例子有点困惑:

我有像这样的标题:

  • 超人
  • 超人HD
  • 超人(HD)
  • 超人,HD
  • 超人,(HD)
  • 动手
  • 手上,

我想要做的是匹配标题末尾的HD或(HD)以及之前的“,”或“”。

通常在我的例子中,我希望匹配除“超人”之外的所有内容,并且在最后2个标题中不匹配。

我正在尝试这样的事情:

[\s,HD|\(HD\))]

但它也匹配所有其他“H”“D”“,”和“”。

任何人都可以提供一些帮助吗?

4 个答案:

答案 0 :(得分:0)

使用此模式:

/(?:,| )(?:HD|\(HD\))/

Online Demo

答案 1 :(得分:0)

您需要在正则表达式中使用行尾标记$,并使其他字符可选:

/\s*,?\(?HD\)?$/

答案 2 :(得分:0)

对于您的示例,请尝试以下模式:

/(?<=\bSuperman)(\s*,?(?:HD|\(HD\)))/g

说明:

(?<=\bSuperman)  # positive lookbehind to assert 'Superman' is behind
\s*              # match 0 or more spaces
,?               # match literal , 0 or one time
(?:HD|\(HD\))    # the ending could be 'HD' or '(HD)'

REGEX 101 DEMO

答案 3 :(得分:-1)

如果这是超人之后的所有事情,那么请使用这种积极的外观:

(?<=Superman).*

如果它只是HD或(HD)有或没有,那么:

(?<=Superman)\s?,?HD|\(HD\)