我有一条路径,需要编写一个正则表达式来过滤使用Common-io库的路径。
路径不应包含:
req/com/res
,res/com/req
,req/al/res
,res/al/req
,_svn
和路径应以.xml
结尾。
FileUtils.listFiles(aFile, new RegexFileFilter("^(.*?)"), TrueFileFilter.INSTANCE)
如果我这样做,则会返回所有xmls。
我对正则表达式一无所知;有人可以问一下如何做到这一点?
答案 0 :(得分:0)
您可以使用以下正则表达式:
^(?i)(?!.*(?:re[qs]/(?:com|al)/re[sq]|_svn)).*\\.xml$
请参阅demo
(?i)
模式使其不区分大小写。如果要使搜索区分大小写,请删除。 (?!.*(?:re[qs]/(?:com|al)/re[sq]|_svn))
模式确保我们不允许路径中的任何禁用字符串。
如果您只想说明整个字词,请添加\b
:
^(?i)(?!.*\\b(?:re[qs]/(?:com|al)/re[sq]|_svn)\\b).*\\.xml$
请参阅another demo
注意在Java风格的正则表达式中,我们不需要转义/
,我们必须双重转义特殊字符。