Python 以单个下划线字符结尾的字符串

Python 以单个下划线字符结尾的字符串,python,regex,Python,Regex,我试图找到正确的正则表达式来检测以单下划线结尾的字符串,例如,hello\uu,this\u。到目前为止,我已经进行了re.match(“[aA zZ](uuz)”,string)但是检测到了像day、ball这样的字符串,也就是说,带有两个我不想要的下划线。任何想法如何获得字符串与一个单一的下划线在最后 谢谢您可以使用 re.search(r"(?<!_)_$", s) re.search(r)(?您可以使用 re.search(r"(?<!_)_$", s) re.searc

我试图找到正确的正则表达式来检测以单下划线结尾的字符串,例如,
hello\uu,this\u
。到目前为止,我已经进行了
re.match(“[aA zZ](uuz)”,string)
但是检测到了像day、ball这样的字符串,也就是说,带有两个我不想要的下划线。任何想法如何获得字符串与一个单一的下划线在最后

谢谢

您可以使用

re.search(r"(?<!_)_$", s)
re.search(r)(?您可以使用

re.search(r"(?<!_)_$", s)

re.search(r)(?您可以使用此正则表达式:

REGEX = re.compile(r'[^_]_$')
REGEX.search(string)`

您可以使用此正则表达式:

REGEX = re.compile(r'[^_]_$')
REGEX.search(string)`

您还可以将角色类更新为使用a-z和a-z,然后匹配单个下划线:

[a-zA-Z]_$
例如使用


请注意,
[aA zZ]
这与
[A-z]
中的
[A-zA-z]
相同,您还可以更新角色类以使用A-z和A-z,然后匹配单个下划线:

[a-zA-Z]_$
例如使用


请注意,
[aA zZ]
这与
[A-z]
中的
[A-zA-z]
相同,我知道您要求一个正则表达式,但也可以通过以下方法实现:

s = "hello__"

s.endswith("_") and not s[:-1].endswith("_")
# False

我知道你要求一个正则表达式,但这也可以通过以下方式实现:

s = "hello__"

s.endswith("_") and not s[:-1].endswith("_")
# False


在末尾添加一个
$
你确定这正是你正在使用的正则表达式吗?因为在我的机器上,
re.match([aA zZ](uuz)”,“day_uuz”)不返回任何值。@Kevin可能是区域设置问题;
ord(“a”)
,这意味着括号表达式可能与第一个
\u
@Darkmoor匹配,或者尝试一个不太模棱两可的括号表达式,如
[a-zA-Z]
@chepner,我同意
[aA zZ]
可以匹配非字母数字字符,如
[\\]^_
和tilde。但我更多的是指它只匹配一个字符,并且在模式中缺少了一个
+
*
。在末尾添加一个
$
你确定这正是你正在使用的正则表达式吗?因为在我的机器上,
re.match([aA zZ](uuu)”,“day_uuu”)
返回None。@Kevin可能是区域设置问题;
ord(“a”)
,这意味着括号表达式可能与第一个
\ucode>@Darkmoor匹配,或者尝试一个不太模棱两可的括号表达式,如
[a-zA-z]
@chepner,我同意
[aA zZ]
可以匹配非字母数字字符,如
[\\]^_
和tilde。但我更多的是指它只匹配一个字符,并且在模式中缺少一个
+
*
。您可以安全地从正则表达式中删除
*
,+1Definetly!谢谢。您可以安全地从正则表达式中删除
*
,+1Definetly!谢谢。我想最好是删除e> +
来自regex,因为初始值在这里不重要,@codemanic你完全正确,更新了。谢谢!我想最好从regex中删除
+
,因为初始值在这里不重要,@codemanic你完全正确,更新了。谢谢!无需制作一份带有片段的列表副本:
而不是s.endswith(“\uuuuuuuu”)
。无需制作带有切片的列表副本:
而不是s.endswith(“\uuu”)