例如,如果我有一个路径列表(即dir1 / subdirA,dir2 / subdirB,dir1 / subdirB等等)。我有一个正则表达式匹配一些目录名称,然后另一个正则表达式匹配子目录。获得有效路径的最佳方法是什么。或者有没有办法使用现有的2个正则表达式组合两个正则表达式?
$args = array(
'theme_location' => 'main-menu',
'container' => 'ul'
);
echo wp_nav_menu($args);
答案 0 :(得分:2)
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.
注意:创建正则表达式时请记住提供的示例,以防您的目录结构不同,您必须相应地更改它。
答案 1 :(得分:0)
您可以通过这种方式组合两个正则表达式。此示例是基于@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(n)方法在Match对象上获得每个匹配的片段。
此正则表达式假设每条路径的长度仅为2
(例如:'dir / subdir'而非'dir / subdir / subdir')
我希望这会有所帮助。