2024-06-30 17:24:58 发布
网友
例如,如果我有一个路径列表(例如dir1/subdirA、dir2/subdirB、dir1/subdirB等)。我有一个正则表达式来匹配一些目录名,然后另一个正则表达式来匹配子目录。获取有效路径的最佳方法是什么。或者有没有办法使用现有的2个正则表达式组合这两个正则表达式?在
DIR_RE = re.compile(r'somedirname', re.I) SUB_RE = re.compile(r'^/somesubdir$', re.I)
import re directories = ["dir1/subdirA", "dir2/subdirB", "dir1/subdirB", "subdir9/dirC"] expression = re.compile('^dir[1-9]\/subdir[A-Z]$', re.I) for directory in directories: if (re.match(expression, directory)): print "Yes the directory path :" +directory+ " is valid" #Do something. #Passed cases = ["dir1/subdirA", "dir2/subdirB", "dir1/subdirB"] else: #Failed cases = ["subdir9/dirC"] #Do something here.
注意:创建正则表达式时要记住提供的示例,如果目录结构不同,则必须相应地更改它。在
您可以用这种方式组合两个regexp。这个例子是基于@ZdaR提出的解决方案的一个替代方案。在
import re directories = ["dir1/subdirA", "dir2/subdirB", "dir1/subdirB", "subdir9/dirC"] regexp = re.compile('^(dir[1-9])\/(subdir[A-Z])$', re.I) for path in directories: frag = regexp.match(path) if frag != None: dir_str = frag.group(1) subdir_str = frag.group(2) entire_match = frag.group(0) # Do something with them
请注意regexp中的括号。这些括号允许在regexp中定义几个组,因此可以在match对象上使用group(n)方法获得每个匹配的片段。在
此regexp假定每个路径的长度仅为2
(例如:“dir/subdir”而不是“dir/subdir/subdir”)
我希望这会有帮助。在
注意:创建正则表达式时要记住提供的示例,如果目录结构不同,则必须相应地更改它。在
您可以用这种方式组合两个regexp。这个例子是基于@ZdaR提出的解决方案的一个替代方案。在
请注意regexp中的括号。这些括号允许在regexp中定义几个组,因此可以在match对象上使用group(n)方法获得每个匹配的片段。在
此regexp假定每个路径的长度仅为2
(例如:“dir/subdir”而不是“dir/subdir/subdir”)
我希望这会有帮助。在
相关问题 更多 >
编程相关推荐