Python 字母数字字符串的正则表达式,下划线不应是第一个或最后一个字符
我希望有一个正则表达式来检查字符串是否只包含大小写字母、数字和下划线,但下划线不应该是字符串中的第一个或最后一个字符,因为我将在下面的Python中尝试使用它Python 字母数字字符串的正则表达式,下划线不应是第一个或最后一个字符,python,regex,python-3.x,python-2.7,Python,Regex,Python 3.x,Python 2.7,我希望有一个正则表达式来检查字符串是否只包含大小写字母、数字和下划线,但下划线不应该是字符串中的第一个或最后一个字符,因为我将在下面的Python中尝试使用它 "^[a-zA-Z0-9_]*$" 使用您的条件指定可选的结束 '^([a-zA-Z0-9]([a-zA-Z0-9_]*[a-zA-Z0-9])?)?$' 外圆括号允许使用空字符串,就像您最初的尝试一样。如果不希望匹配空字符串,可以通过删除开头括号和带有问号量词的结束括号来简化 还要注意,为了简单起见,我使用了捕获括号;将左括号
"^[a-zA-Z0-9_]*$"
使用您的条件指定可选的结束
'^([a-zA-Z0-9]([a-zA-Z0-9_]*[a-zA-Z0-9])?)?$'
外圆括号允许使用空字符串,就像您最初的尝试一样。如果不希望匹配空字符串,可以通过删除开头括号和带有问号量词的结束括号来简化
还要注意,为了简单起见,我使用了捕获括号;将左括号转换为非捕获的(?:
)应该也会使它运行得更快一些,尽管在这个简单的例子中,这并不重要
正如@JoelCornett所建议的,您可以使用
re.match
仅在开始时显式搜索字符串并删除^
锚点。您可以使用以下正则表达式:
^(?!_)\w*(?<!_)$
^(?)\w*(?
\w
相当于[A-Za-z0-9\
我使用负向前看(?!)
检查第一个字符是否为
,以及负向后看(?检查最后一个字符是否为\u
嗯,小写字符?除此之外,它是正确的。嗯,我们的答案看起来非常相似,如果我做了你建议的更改,实际上会是相同的。我相信你在我之前发布了你的,所以我会继续删除我的,并更新你的。我只是更新了你的rre.match
建议…我会将其添加进去。是否要匹配空字符串,“
?@user1559873,请。@thg435:我只是盲目地跟随OP的例子(即使OP不知道他/她在做什么)。