首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >re.match不在python2.7中工作

re.match不在python2.7中工作
EN

Stack Overflow用户
提问于 2015-12-23 10:49:24
回答 2查看 591关注 0票数 1
代码语言:javascript
复制
keyword = "*"
keyphrase = "*"
while not(re.match('[a-z ]',keyword)):
    keyword = raw_input("enter a keyword:-").lower()
while not(re.match('[a-z ]',keyphrase)):
    keyphrase = raw_input("enter a key phrase:-").lower()

上面的代码是我正在制作的程序的开始;但是,我希望用户输入的关键字和关键字(即raw_inputs)仅为字母表或空格中的字符,因此它们不能包含其他字符,例如数字或符号。

上面的代码不能完全工作,例如,如果用户输入"1234“作为关键字,则循环运行,他们必须再次输入关键字;同样适用于”1234 as“,但是如果他们输入"abcd1234”,即使它包含数字,循环也不会运行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 10:55:41

re.match从一开始就匹配,但是如果匹配直到文本结束也会返回匹配。因此,在示例输入abcd1234中,正则表达式与abcd部件匹配。因此,循环停止(找到匹配项)。

更改regex,使其匹配,直到文本结束,您的问题将得到解决。试试下面的代码:

代码语言:javascript
复制
keyword = "*"
keyphrase = "*"
while not(re.match('[a-z ]*$',keyword)):
    keyword = raw_input("enter a keyword:-").lower()
while not(re.match('[a-z ]*$',keyphrase)):
    keyphrase = raw_input("enter a key phrase:-").lower()

注意,$意味着正则表达式必须匹配,直到字符串结束。*意味着任何数量的[a-z ]都可以匹配。

票数 2
EN

Stack Overflow用户

发布于 2015-12-23 10:52:17

因为re.match从一开始就尝试匹配,而且regex [a-z ]也匹配了一个字符,即第一个字符,而不关心剩余的字符。

代码语言:javascript
复制
while not(re.match('[a-z ]+$',keyword)):
    keyword = raw_input("enter a keyword:-").lower()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34433959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档