sre公司_常量.错误:缺少),子模式未终止

2024-10-02 18:14:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我是gaurav,我正在学习编程。我正在阅读python3中的正则表达式,所以我想尝试一下,所以我在eclipse中编写了这段代码,但是我得到了很多错误.can谁来帮帮我

import re
def add_shtner(add):
    return re.sub(r"\bROAD\b","RD",add)
print(add_shtner("100,BROAD ROAD"))


# a code to check valid roman no.
ptn=r"^(M{0,3})(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}$)"
def romancheck(num):
    num=num.upper()
    if re.search(ptn,num):
        return "VALID"
    else:
        return "INVALID"
print(romancheck("MMMLXXVIII"))
print(romancheck("MMMLxvviii"))

mul_line_str='''adding third argument
             re.VERBOSE in re.search()     
                   will ignore whitespace
                               and comments'''

print(re.search("re.search()will",mul_line_str,re.VERBOSE))
print(re.search("re.search() will",mul_line_str,re.VERBOSE))
print(re.search("ignore",mul_line_str,re.VERBOSE))

ptn='''
     ^                        #beginning of the string
     M{0,3}                   #thousands-0 to 3 M's
     (CM|CD|D?C{0,3}          #hundreds
     (XC|XL|L?XXX)            #tens
     (IX|IV|V?III)            #ones 
     $                        #end of the string
     '''
print(re.search(ptn,"MMMCDLXXIX",re.VERBOSE))
def romanCheck(num):
    num=num.upper()
    if re.search(ptn,num,re.VERBOSE):
        return "VALID"
    else:
        return "INVALID"

print(romanCheck("mmCLXXXIV"))
print(romanCheck("MMMCCLXXXiv"))

我写了这个代码,我运行了它,但是我得到了这个-

^{pr2}$

这些错误是什么?谁能帮我。 我已经理解了所有的输出,但是我不能理解这些错误


Tags: readdverbosesearchreturndef错误line
1条回答
网友
1楼 · 发布于 2024-10-02 18:14:47

该错误意味着您向第46行中的search()函数传递了一个格式错误的正则表达式。在

尽管您已在此行中定义了有效的RegEx:

ptn=r"^(M{0,3})(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}$)"

稍后,您可以使用一些帮助/docstring覆盖此模式(ptn):

^{pr2}$

这不是有效的RegEx模式,它在(CM|CD|D?C{0,3}后缺少右括号。 将这个新字符串作为正则表达式传递到下一行print(re.search(ptn,"MMMCDLXXIX",re.VERBOSE)),然后re.compile()抛出该错误。在

如果变量使用另一个名称来保存第27行中的help/docstring(基于示例代码或第38行,基于stacktrace),则一切看起来都很好:

100,BROAD RD
VALID
INVALID
None
None
<_sre.SRE_Match object; span=(85, 91), match='ignore'>
<_sre.SRE_Match object; span=(0, 10), match='MMMCDLXXIX'>
VALID
VALID

相关问题 更多 >