為什么這個正則運算式與測驗字串不匹配?
final String FULLY_QUALIFIED_NAME_REGEXP = "\\w [:]\\w ";
String key = "TablePageMultipleWithServerSideFiltering:filter-1";
boolean matches = key.matches(FULLY_QUALIFIED_NAME_REGEXP);
System.out.println(matches); // false
什么正則運算式會捕獲:
- 任何字串
- :
- 任何字串
?
uj5u.com熱心網友回復:
破折號 (-) 不被 覆寫\w,并且匹配匹配整個事物的嘗試,只有當整個字串實際匹配時才會成功。因此,這不起作用:由于破折號,整個字串不匹配。
如果您打算這樣做并且唯一的問題是您打算-也成為名稱的一部分,那么請使用 eg[a-zA-Z0-9-]而不是\w該部分。
相反,如果您的意思是:任何不是冒號的東西,空格,表情符號,美元等等 - 那么仍然可以[^:] 在正則運算式上進行匹配,使用代替(即:正則運算式中的“任何不是冒號的東西”),但是真的,這不是更容易分裂嗎?
注意:用 包圍結腸[]沒有任何作用。就寫吧:,簡單點。
String[] parts = "TablePageMultipleWithServerSideFiltering:filter-1".split(":", 2);
if (parts.length == 1) {
// it wasn't a match; no colon in there
} else {
String key = parts[0];
String value = parts[1];
assert key.equals("TablePageMultipleWithServerSideFiltering");
assert value.equals("filter-1");
}
或者,更簡單的是,如果您的唯一目的是得到一個boolean指示:“輸入是否包含冒號”的值,請忘記所有這些,只需執行input.contains(":").
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/380770.html
