我一直在試圖找到正則表達式的例子,但似乎無法找到一個: 我正在尋找正則表達式來匹配字符串中的第一個字符,如果匹配,我想省略它。例如正則表達式匹配字的第一個字母並省略它
String example = "Blueberry strawberry peach Banana";
如果第一個字符或單詞與B或B開始 - 性格敏感不要緊,忽略它,只返回草莓桃。
有什麼建議嗎?
我一直在試圖找到正則表達式的例子,但似乎無法找到一個: 我正在尋找正則表達式來匹配字符串中的第一個字符,如果匹配,我想省略它。例如正則表達式匹配字的第一個字母並省略它
String example = "Blueberry strawberry peach Banana";
如果第一個字符或單詞與B或B開始 - 性格敏感不要緊,忽略它,只返回草莓桃。
有什麼建議嗎?
可以在replaceAll
使用正則表達式(在這裏「與B或b啓動」)這個詞的任何一方。
你可以試試:
(?:^|\s+)(?![Bb])[^\s]*
樣品:
final String pat = "(?:^|\\s+)(?![Bb])[^\\s]*";
final String string = "Blueberry strawberry peach Banana kela lau bishu ";
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(string);
while (m.find())
if (!m.group(0).trim().isEmpty())
System.out.println(m.group(0));
或者只是'\ b [^ Bb] \ S *'。 –
這可以按照預期在http://regexr.com/上運行。 Rawing建議的「\ b [^ Bb] \ S *」只是將文本與Bb分離成單獨的匹配。 –
@JonathanSchmold你是對的,我的壞。但是這個正則表達式中的'(?:^ | \\ s +)'可以用'\ b'替代以提高可讀性並且沒有缺點(儘管如此,你還必須將'*'改成'+'以防止空火柴)。 –
這可能是一個解決辦法:
public static void main(String[] args) {
String example = "Blueberry strawberry peach Banana";
String res ="";
for(String word : example.split(" ")){
if(!Pattern.matches("[Bb].*",word)){
res += word+" ";
}
}
res = res.substring(0, res.length()-1);
//Print the result
System.out.println(res);
}
你只保留字至極唐「
String input = "Blueberry strawberry peach Banana";
String repl = input.replaceAll("\\s*\\b[Bb]\\S*\\s*", "");
//=> strawberry peach
\\s*\\b[Bb]\\S*\\s*
比賽開始B
或b
任何字由0或多個空格的包圍:T匹配您的規則
你必須使用正則表達式嗎? – Mureinik
按空格分隔並檢查單詞聽起來是否合理 – dizpers
我只是想知道是否可以使用正則表達式解決問題。 – killburn