我有一个正则表达式,但它并不适用于所有情况。
我需要它能够匹配以下任何情况:
如果这个词" test_word"在声明中返回true
我一直在使用的还没有工作
('^/[^/]*/test_word/.+')
或
('^/test_word/.+')**
所以我在语句中与dirs匹配,例如:
/user/test_word
/test_word
/test_word/test_word/
/something/something/test_word/
任何你能想到的事情都可能发生。
答案 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)
答案 2 :(得分:0)
答案 3 :(得分:0)
保持简单:您希望test_word
作为完整的路径名组件(不是较大单词的一部分),因此要么用斜线包围,要么在字符串的开头或结尾:
(^|/)test_word($|/)
但更好的解决方案是将路径名拆分为组件,然后使用完全匹配:
pathname = "/usr/someone/test_word"
return "test_word" in pathname.split("/")
试试吧。