python中的正则表达式错误:sre_constants.error:无需重复

时间:2018-10-18 09:37:37

标签: python regex

仅当字母前后有True时,我才尝试返回+

def SimpleSymbols(string): 
if re.search(r"(?<!+)\w(?!+)", string) is None :
    return True
else:
    return False

1 个答案:

答案 0 :(得分:1)

未转义的+是一个量词,可将其修改的模式重复1次或多次。要匹配文字+,您需要对其进行转义。

但是,(?<!\+)(?!\+)的作用相反:如果在+前面或后面有一个字符,则匹配将失败。

此外,\w不仅仅与字母匹配,它还与字母,数字,下划线以及Python 3.x中的Unicode支持(或Python 2.x中的re.U)匹配更多字符。您可以改用[^\W\d_]

使用

def SimpleSymbols(string): 
    return bool(re.search(r"\+[^\W\d_]\+", string))

如果字符串中有True,则返回+[Letter]+;如果不匹配,则返回False

请参见Python demo

import re

def SimpleSymbols(string): 
    return bool(re.search(r"\+[^\W\d_]\+", string))
print(SimpleSymbols('+d+dd')) # True
print(SimpleSymbols('ddd'))   # False