我正在使用java正則表達式來匹配特定平臺。 例如,我的字符串列表是:在可選括號內匹配單個單詞
Ruby 2.1 (Puma)
Ruby 2.3 (Passenger Standalone)
Ruby 2.2 (Puma)
Ruby 2.2 (Passenger Standalone)
Ruby 1.9.6
從這些我只想挑不屬於客運並且standlone的人。即。 Ruby 2.1(Puma)和Ruby 2.2(Puma)和Ruby 1.9.6。唯一的限制/條件是版本名稱,即Puma或Passenger Standalone是可選的。因此,括號和括號內的字符串是可選的
我嘗試使用下面的正則表達式:
"Ruby (.*)\s+\(?\w{0,1}\)?$"
我有選項字符串的ArrayList。我的方法的代碼如下所示:
public void displayVersions(String platform) {
String regex = "Ruby (.*)\s+\(?\w{0,1}\)?$";
List<String> availableVersions = getAvailableVersions();
List<String> filtered = availableVersions.stream()
.filter(version -> version.matches(regex))
.collect(Collectors.toList());
System.out.println(filtered);
}
的正則表達式是不正確的,我沒有得到正確的結果。我只有Passenger Standalone版本。我究竟做錯了什麼?
爲什麼不只是'.filter(version - > version.indexOf(「Passenger Standalone」)<0)'? – 9000