Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字母数字字符串的正则表达式,下划线不应是第一个或最后一个字符_Python_Regex_Python 3.x_Python 2.7 - Fatal编程技术网

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])?)?$' 外圆括号允许使用空字符串,就像您最初的尝试一样。如果不希望匹配空字符串,可以通过删除开头括号和带有问号量词的结束括号来简化 还要注意,为了简单起见,我使用了捕获括号;将左括号

我希望有一个正则表达式来检查字符串是否只包含大小写字母、数字和下划线,但下划线不应该是字符串中的第一个或最后一个字符,因为我将在下面的Python中尝试使用它

"^[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

嗯,小写字符?除此之外,它是正确的。嗯,我们的答案看起来非常相似,如果我做了你建议的更改,实际上会是相同的。我相信你在我之前发布了你的,所以我会继续删除我的,并更新你的。我只是更新了你的r
re.match
建议…我会将其添加进去。是否要匹配空字符串,
?@user1559873,请。@thg435:我只是盲目地跟随OP的例子(即使OP不知道他/她在做什么)。