2

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

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

如果我保持

string = "abc shot0000 "

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

但如果我保持

string = "abc shot0000 _"

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

4

3 回答 3

2

search顾名思义,您正在使用此功能,如果出现模式,则在您的字符串中搜索,并且在您的两个字符串中就是这种情况。

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

if re.search(r".*\s\D+\s$", string):
    print string
于 2013-07-02T09:17:27.437 回答
1

您需要将 RE 锚定在字符串的末尾$

if re.search(r".*\s\D+\s$", string):
    print string
于 2013-07-02T09:19:46.383 回答
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
于 2013-07-02T09:20:56.453 回答