regex python在位置0处返回未终止字符集[已关闭]

r7s23pms  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(179)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。

这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question

代码:

import re
inp=input()
tup=tuple(map(str,inp.split(',')))
i=0
while i<len(tup):
    x=tup[i]
    a=re.search("[0-9a-zA-Z\$#@",x)
    if a!="None":
        break
    else:
        i=i+1
if a!="None" and len(tup[i])>=6 and len(tup[i])<=12:
    print(tup[i])
else:
    print("invalid")

**输入:**ABd1234@1,a F1#,2w3E *,2We3345
错误:

位置0处的字符集未终止

5sxhfpxr

5sxhfpxr1#

该错误源于无效的正则表达式-具体来说,就是您省略了右括号。
然而,即使您根据问题中显示的代码修复了该问题,由于以下几个原因,这也不会起作用。

  1. www.example.com的返回值re.search将始终不等于“None”
    1.代码中的最后一个 if 测试在 while 循环之外,这几乎肯定不是我们想要的。
    请尝试以下操作:
import string

VALIDCHARS = set(string.ascii_letters+string.digits+'$#@')

for word in input().split(','):
    if 6 <= len(word) <= 12 and all(c in VALIDCHARS for c in word):
        print(f'{word} is valid')
    else:
        print(f'{word} is invalid')
kuuvgm7e

kuuvgm7e2#

您的正则表达式缺少右括号。它应该是:

a=re.search("[0-9a-zA-Z\$#@]",x)

此外,将字符串"None"的所有示例替换为关键字None。这是因为.search返回None,如此处所示。
https://docs.python.org/3/library/re.html#re.search

相关问题