尝试创建一个函数,该函数具有一个给定的正则表达式,该表达式包含所有合法字符,如果字符串仅包含,则将检查字符串是否包含这些字符。
例如
import re
legal_characters = r'[\*\-]' # Matches asterisc and dash characters
def is_legal(test_string):
if re.match(legal_characters, test_string):
print("Legal")
else:
print("Not legal")
is_legal("***---123") # should print "Not legal"
is_legal("AbC123") # should print "Not legal"
is_legal("*-*-*") # should print "Legal"产出:
Not legal
Not legal
Not legal我真的不明白为什么。谁能解释一下吗?
发布于 2016-12-18 08:18:53
这将复制您想要的内容:^匹配字符串$的开头和结尾。中间有重复的+字符\w = [A-Za-z0-9_]。
legal_characters = '^\w+$'更新
在修改你的问题后,这是我的建议:
^与字符串$的开头与结束匹配。在中间有重复的+元素[*-]
legal_characters = '^[*-]+$'没有必要用\来转义\。
正如Maroun Maroun指出的,在match扫描字符串的开头时,可以省略^:
legal_characters = '[*-]+$'发布于 2016-12-18 08:18:23
试试这个:
import re
legal_characters = r'\w+$' # Matches Unicode word characters
r = re.compile(legal_characters)
def is_legal(test_string):
if re.match(r, test_string):
print("Legal")
else:
print("Not legal")
is_legal("aaaAA$") # should print "Not legal"
is_legal("AAAA***") # should print "Not legal"
is_legal("AAABBB") # should print "Legal"在python 2.7.12上测试。
发布于 2016-12-18 08:28:26
您不需要使用re。尝试:
legal_characters = '*-'
def is_legal(test_string):
for s in test_string:
if s not in legal_characters:
print("Not legal")
return
print("Legal")产出如下:
>>> is_legal("***---123")
Not legal
>>> is_legal("AbC123")
Not legal
>>> is_legal("*-*-*")
Legalhttps://stackoverflow.com/questions/41206546
复制相似问题