用于文件过滤的正则表达式Java正则表达式
我想用Java构建一个regexp,它将在FilenameFilter中传递,以过滤目录中的文件
问题是我无法掌握regexp“心智模型”的诀窍:
这是我用来选择要排除的文件的regexp
((ABC | XYZ))+\w*测试。xml
我想做的是选择所有以Test结尾的文件。xml,但不要以ABC或XYZ开头
你能添加一些资源来帮助我与regexps的战斗吗
谢谢
下面的参考资料解释了关于regexpregular-expressions.info的很多事情
# 1 楼答案
要么将所有文件与此正则表达式匹配:
或者,你做相反的事情,并获取每个不匹配的文件:
就我个人而言,我觉得第二种选择要简单得多
# 2 楼答案
只是为了好玩的正则表达式:
即使这不是最具可读性的解决方案,也应该可以,这样可以避免您定义自己的自定义文件过滤器
(?<!ABC|XYZ)
是一个look-behind表达式,避免任何第四个字符(在前三个字符之后)前面加上想要避免的字符# 3 楼答案
这些东西在没有正则表达式的情况下更容易、更快、更可读
# 4 楼答案
这将选择不以A、B、C、X、Y或Z开头、以Test结尾的文件。xml:
“[^ABCXYZ].*Test\\.xml\\z”