python正则表达式问题与下划线

时间:2013-07-02 09:13:56

标签: python regex

我正在尝试使用正则表达式进行一些字符串搜索,其中我需要打印[az,AZ,_]只有当它们以“”空格结束时,但是如果我在末尾有下划​​线我会遇到一些麻烦然后它不会等待空间并执行命令。

if re.search(r".*\s\D+\s", string):
    print string

如果我保持

string = "abc shot0000 "

它工作正常,我只需要在字符串以空格\s结尾时执行它。

但如果我保持

string = "abc shot0000 _"

然后它不等待空格\s并执行命令。

3 个答案:

答案 0 :(得分:2)

你正在使用search这个函数,就像名字所说的那样,如果模式出现就在你的字符串中搜索,并且你的两个字符串就是这种情况。

您应该在正则表达式中添加$以搜索字符串的结尾:

if re.search(r".*\s\D+\s$", string):
    print string

答案 1 :(得分:1)

您需要使用$

将RE锚定在字符串的末尾
if re.search(r".*\s\D+\s$", string):
    print string

答案 2 :(得分:1)

使用$

>>> strs = "abc shot0000 "
>>> re.search(r"\s\w+\s$", strs)     #use \w: it'll handle A-Za-z_
<_sre.SRE_Match object at 0xa530100>
>>> strs = "abc shot0000 _"
>>> re.search(r"\s\w+\s$", strs)
#None