我想檢查在我的字符串中是否有letter
後跟colon
。正則表達式去驅動器號
如果是這樣,剝離兩者。
F:/users/mark/
=>/users/mark/
這是我到目前爲止有:
if(Pattern.matches("[a-zA-Z]:", path))
path = path.substring(2);
有沒有人對如何做到這更好的主意嗎?
我想檢查在我的字符串中是否有letter
後跟colon
。正則表達式去驅動器號
如果是這樣,剝離兩者。
F:/users/mark/
=>/users/mark/
這是我到目前爲止有:
if(Pattern.matches("[a-zA-Z]:", path))
path = path.substring(2);
有沒有人對如何做到這更好的主意嗎?
您可以使用:
path = path.replaceAll("^[a-zA-Z]:", "");
@Angelina我幾乎可以肯定你把正則表達式放到'matches'中。別。只需使用'path = path.replaceFirst(「^ [a-zA-Z]:」,「」);' –
您可以使用正則表達式^[^\/]*(.*)
和捕捉到的第一組。
sourceString = sourceString.replaceAll("^[^\\/]*(.*)", "$1");
輸入
F:/users/mark/
匹配信息
MATCH 1
1. [2-14] `/users/mark/`
您可以用簡單的字符串方法實現你的目標:
String path = "F:/some/path";
if (path.length() > 1 && Character.isLetter(path.charAt(0)) && path.charAt(1) == ':') {
path = path.substring(2);
System.out.println(path); // this is for demo
}
其中:
path.length() > 1
- 如果path
長度超過1&& Character.isLetter(path.charAt(0))
- 和所述第一字符是字母&& path.charAt(1) == ':'
- 和第二炭是:
,path.substring(2)
- 使用從第二個索引開始的子串。是的,不要忘記把結果賦給變量。
使用以下「^ [a-zA-Z]:」,這意味着您以驅動器號和冒號開頭。 – SMA
'path = path.replaceFirst(「^ [a-zA-Z]:」,「」);' – anubhava
'matches'不會檢查某個子字符串是否可以匹配正則表達式,但是如果* entire *字符串匹配它。你需要在正則表達式的末尾添加'。*',以便匹配其他字符串,或者使用'Matcher.find()'代替。 – Pshemo