只是試圖獲得更多的正則表達式的經驗(同時也使工作更輕鬆),我試圖解析Java中的一些文件名。正則表達式匹配Ruby,但不是Java?
我的字符串是這樣的:/home/user/example/Results/ExampleFilePrefix_20140324-0500_OptionalTextThatMightContainNumbers123.csv
基本的文件名總是以ExampleFilePrefix_
其次是時間戳開始,有時OptionalTextThatMightContainNumbers123
只是取決於是如何生成的文件結束。我想要的相關信息是時間戳,如果存在,則選擇性文本。
我瞎搞與各種正則表達式,雖然我可以讓他們全部用Ruby的正則表達式解析器來工作,我不能讓任何人在Java中工作。我沒有跟蹤他們,因爲我去了,但是這是我最近的嘗試:
_(\w+-\w+)
如預期在Ruby中其中一期工程:http://rubular.com/r/K2BiboURRo,但即使不來接近Java的匹配: http://fiddle.re/c7m04
我不認爲這是我寫的代碼,因爲在線解析器不匹配的問題,但我會將其粘貼到此處以確保。
private String extractFileName(String filename) {
String resultNameBase = "RegexDidntMatch";
Pattern pattern = Pattern.compile("_(\\w+-\\w+)", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(filename);
if (matcher.matches() && matcher.find()) {
resultNameBase = matcher.group(1);
}
return resultNameBase;
}
一如往常,感謝所有提前
它的工作原理完全一樣的[文件](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html#matches())在Java中說: - '嘗試將整個區域對pattern' – FrankieTheKneeMan