这应该很简单.如果我有这样的字符串:
../Test?/sample*.txt
Run Code Online (Sandbox Code Playgroud)
那么获得与此模式匹配的文件列表的普遍接受的方法是什么?(例如,它应匹配../Test1/sample22b.txt,../Test4/sample-spiffy.txt但不是../Test3/sample2.blah或../Test44/sample2.txt)
我已经看了一下org.apache.commons.io.filefilter.WildcardFileFilter它似乎是正确的野兽,但我不知道如何使用它来查找相对目录路径中的文件.
我想我可以查看ant的源代码,因为它使用了通配符语法,但我必须在这里遗漏一些非常明显的东西.
(编辑:上面的例子只是一个示例案例.我正在寻找在运行时解析包含通配符的常规路径的方法.我根据mmyers的建议想出了如何做到这一点,但这有点烦人.更不用说java JRE似乎从一个参数中自动解析main(String []参数)中的简单通配符,以"节省"我的时间和麻烦......我很高兴我没有非文件参数混合.)
有没有办法在.gitignore文件中使用扩展正则表达式(ERE)?例如,我想+在.gitignore文件中使用重复字符.有没有办法做到这一点?
我有一个大约12万个英语单词的列表(基本上是语言中的每个单词).
我需要一个正则表达式,允许使用通配符字符搜索这些单词,aka *和?.
几个例子:
m?st*,它将匹配例如master或mister或mistery.*ind(任何结尾的单词ind),它将匹配wind或bind或blind或grind.现在,大多数用户(尤其是那些不熟悉正则表达式的用户)知道它?只是一个字符*的替代品,而是0,1个或更多字符的替代品.我绝对想基于此构建我的搜索功能.
我的问题是:如何将用户输入的内容(m?st*例如)转换为正则表达式?
我在网上搜索(显然包括这个网站),我找到的所有内容都是试图教我太多的教程或者有些相似的问题,但还不足以为我自己的问题提供答案.
所有我能想出的是,我不得不更换?用..因此m?st*变得m.st*.但是,我不知道要替换什么*.
任何帮助将不胜感激.谢谢.
PS:我对正则表达式完全陌生.我知道它们有多么强大,但我也知道它们很难学.所以我从来没有花时间去做它......
我编写用正则表达式解析文本的程序.应从用户处获得正则表达式.我希望使用glob语法进行用户输入,并在内部将glob字符串转换为正则表达式.例如:
"foo.? bar*"
Run Code Online (Sandbox Code Playgroud)
应转换为
"^.*foo\.\w\bar\w+.*"
Run Code Online (Sandbox Code Playgroud)
不知何故,我需要从字符串中转义所有有意义的字符,然后我需要替换glob*和?具有适当的正则表达式语法的字符.这样做最方便的方法是什么?
如何获取Array[io.BufferedSource]与给定目录中的通配符匹配的所有文件?
即,如何定义的方法io.Source.fromDir,使得
val txtFiles: Array[io.BufferedSource] = io.Source.fromDir("myDir/*.txt") // ???
Run Code Online (Sandbox Code Playgroud)
我有以下字符串作为全局规则:
**/*.txt
Run Code Online (Sandbox Code Playgroud)
并测试数据:
/foo/bar.txt
/foo/buz.jpg
/foo/oof/text.txt
Run Code Online (Sandbox Code Playgroud)
是否可以使用glob规则(不将glob转换为regex)来匹配测试数据并返回valud条目?
一个要求: Java 1.6
我有一个带有外卡的模式字符串说X(例如:abc*).
我还有一组字符串,我必须匹配给定的模式.
例如:
abf - false
abc_fgh - 是的
abcgafa - 是的
fgabcafa - false
我尝试使用正则表达式,它没有用.
这是我的代码
String pattern = "abc*";
String str = "abcdef";
Pattern regex = Pattern.compile(pattern);
return regex.matcher(str).matches();
Run Code Online (Sandbox Code Playgroud)
这返回false
有没有其他方法可以使这项工作?
谢谢