Python 正则表达式匹配目录,然后匹配子目录

Python 正则表达式匹配目录,然后匹配子目录,python,regex,Python,Regex,例如,如果我有一个路径列表(即dir1/subdirA、dir2/subdirB、dir1/subdirB等)。我有一个正则表达式来匹配一些目录名,然后另一个正则表达式来匹配子目录。获取有效路径的最佳方法是什么。或者有没有办法使用现有的两个正则表达式组合这两个正则表达式 DIR_RE = re.compile(r'somedirname', re.I) SUB_RE = re.compile(r'^/somesubdir$', re.I) 注意:创建正则表达式时,请记住提供的示例,如果目录结

例如,如果我有一个路径列表(即dir1/subdirA、dir2/subdirB、dir1/subdirB等)。我有一个正则表达式来匹配一些目录名,然后另一个正则表达式来匹配子目录。获取有效路径的最佳方法是什么。或者有没有办法使用现有的两个正则表达式组合这两个正则表达式

DIR_RE = re.compile(r'somedirname', re.I)

SUB_RE = re.compile(r'^/somesubdir$', re.I)

注意:创建正则表达式时,请记住提供的示例,如果目录结构不同,您必须相应地更改它。

您可以通过这种方式组合两个正则表达式。此示例是基于@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中定义几个组,因此可以使用group(n)方法在match对象上获得每个匹配的片段

此regexp假定每个路径的长度仅为2

(例如:“dir/subdir”而不是“dir/subdir/subdir”)


我希望这会有所帮助。

您需要提供您正在使用的正则表达式和一些您希望匹配/丢弃的示例数据。这个问题非常广泛。只需将它们连接起来
'somedirname\/somesubdir'
,然后将这个正则表达式应用于整个列表中的目录路径。通常情况下,您应该更喜欢。但是您应该提供更多的细节。在您的情况下,有效的目录是否必须遵循“dirX/subdirY”模式?或者这只是一个例子?请改进你的问题,这样人们才有机会回答。看看这是非常有用的,但不完全是我要找的。如果我有DIR_RE=RE.compile(r'DIR[1-9]',RE.I)和SUB_RE=RE.compile(r'subdir[A-Z]',RE.I),是否还有其他方法可以组合这两个现有的正则表达式?我经常使用RE.compile(),但我不知道它接受了第二个参数。为什么?我明白了。对于不区分大小写的regexp。我在这里看到@user2378481,我不认为有任何方法可以直接组合两个正则表达式,但我不确定是否存在某种间接方法。请查看下面我的答案。这或多或少类似于将两个或多个regexp组合在一个中(某种间接方法,但非常好)
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