【发布时间】:2018-03-25 21:34:43
【问题描述】:
这是我第一次尝试将正则表达式与 Python 一起使用,或者根本没有,但它没有按预期工作。我想要一个正则表达式来匹配任何字母字符或下划线作为第一个字符,然后是任意数量的字母数字字符或下划线。我使用的正则表达式是 '^[a-z_,AZ][a-z_A-Z0-9]*',它似乎在 pythex.org 上产生了我想要的东西,但在我的代码中它匹配的是我所做的字符串不想。
我的代码如下:
isMatch = re.match('^[a-z_A-Z][a-z_A-Z0-9]*', someString)
return True if isMatch else False
两个我不想要的匹配字符串示例是:“qq-q”和“va[r”。我做错了什么?
【问题讨论】:
-
告诉我们
someString是什么 -
嗯,前两个字符完全符合预期,
[a-z_A-Z]匹配,然后[a-z_A-Z0-9]匹配。这两个条件后面的*表示前面的语句可以重复零次或多次。该模式将字符串的开头部分匹配为有效,然后忽略其余部分,因为您缺少结尾$或任何其他模式以表明您想在那里结束搜索。 -
如果您尝试编写一个函数来检测字符串是否是有效的 Python 标识符,您可以不使用正则表达式:尝试
str.isidentifier()方法。