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

时间:2019-05-31 12:38:32

标签: python regex

我试图找到正确的正则表达式来检测以单个下划线结尾的字符串,例如hello_, this_。到目前为止,我有re.match("[aA-zZ](_)", string),但是检测到字符串,例如day __,ball__,即带有两个我不想使用的下划线。任何有关如何最后得到一个下划线的字符串的想法。

谢谢

4 个答案:

答案 0 :(得分:5)

您可以使用

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

请参见regex demo。请参阅正则表达式图:

enter image description here

详细信息

  • (?<!_)-一个negative lookbehind,可确保在当前位置的左侧没有_
  • _-下划线
  • $-字符串的结尾。

请注意,您需要re.search在字符串内的任何地方寻找匹配项,而不是re.match仅在字符串的开头进行匹配。

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

[a-zA-Z]_$

例如使用re.search

pattern = "[a-zA-Z]_$"
re.search(pattern, "day__")

Python demo

请注意,[aA-zZ][A-z]中的[a-zA-Z] is different

答案 3 :(得分:2)

我知道您要求使用正则表达式,但这也可以通过简单的方式完成:

s = "hello__"

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