How to parse for tags with '+' in python

后端 未结 2 1062
一个人的身影
一个人的身影 2021-01-03 04:30

I\'m getting a \"nothing to repeat\" error when I try to compile this:

search = re.compile(r\'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])\' % \'+test\', re.I)


        
相关标签:
2条回答
  • 2021-01-03 04:37

    Escape the plus:

    r'\+test'
    

    The plus has a special meaning in regexes (meaning "match the previous once or several times"). Since in your regex it appears after an open paren, there is no "previous" to match repeatedly.

    0 讨论(0)
  • 2021-01-03 04:38
    re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % '\+test', re.I)
    

    The "+" is the "repeat at least once" quantifier in regular expressions. It must follow something that is repeatable, or it must be escaped if you want to match a literal "+".

    Better is this, if you want to build your regex dynamically.

    re.compile(r'([^a-zA-Z0-9])(%s)([^a-zA-Z0-9])' % re.escape('+test'), re.I)
    
    0 讨论(0)
提交回复
热议问题