Python - dir的正则表达式

时间:2014-10-08 16:14:07

标签: python regex

我有一个正则表达式,但它并不适用于所有情况。

我需要它能够匹配以下任何情况:

如果这个词" test_word"在声明中返回true

我一直在使用的还没有工作

('^/[^/]*/test_word/.+')

('^/test_word/.+')**

所以我在语句中与dirs匹配,例如:

/user/test_word
/test_word
/test_word/test_word/
/something/something/test_word/

任何你能想到的事情都可能发生。

4 个答案:

答案 0 :(得分:1)

如果您知道它是一条路径并且只想检查test_word是否在那里,您可以使用re.search来查找" test_word"路径中的任何地方,或者只是" test_word"在路上。

如果你想确保它只是test_word,而不是像test_words,test_word9等,那么你可以这样做:

import re

dirs = ["/user/test_word", "/test_wordsmith", "/user/test_word2", "do not match", "/usr/bin/python", "/test_word","/test_word/test_word/","/something/something/test_word/", "/test_word/files", "/test_word9/files"]

for dir in dirs:

    if re.search('/test_word(/|$)', dir):
        print(dir, '-> yes')
    else:
        print(dir, '-> no')

您正在匹配正斜杠后跟test_word,后跟正斜杠或字符串/行的结尾。

输出:

/user/test_word -> yes
/test_wordsmith -> no
/user/test_word2 -> no
do not match -> no
/usr/bin/python -> no
/test_word -> yes
/test_word/test_word/ -> yes
/something/something/test_word/ -> yes
/test_word/files -> yes
/test_word9/files -> no

答案 1 :(得分:0)

^(?:/[^/]*)*/test_word.*

试试这个。看看演示。

http://regex101.com/r/hQ1rP0/86

答案 2 :(得分:0)

最后只是这个 -

/test_word/?$

在中间或结尾,这是 -

/test_word(?:/|$)

<强> DEMO

答案 3 :(得分:0)

保持简单:您希望test_word作为完整的路径名组件(不是较大单词的一部分),因此要么用斜线包围,要么在字符串的开头或结尾:

(^|/)test_word($|/)

但更好的解决方案是将路径名拆分为组件,然后使用完全匹配:

pathname = "/usr/someone/test_word"
return "test_word" in pathname.split("/")

试试吧。