2017-03-05 291 views
0

我一直在試圖找到正則表達式的例子,但似乎無法找到一個: 我正在尋找正則表達式來匹配字符串中的第一個字符,如果匹配,我想省略它。例如正則表達式匹配字的第一個字母並省略它

String example = "Blueberry strawberry peach Banana"; 

如果第一個字符或單詞與B或B開始 - 性格敏感不要緊,忽略它,只返回草莓桃。

有什麼建議嗎?

+0

你必須使用正則表達式嗎? – Mureinik

+0

按空格分隔並檢查單詞聽起來是否合理 – dizpers

+0

我只是想知道是否可以使用正則表達式解決問題。 – killburn

回答

2

可以在replaceAll使用正則表達式(在這裏「與B或b啓動」)這個詞的任何一方。

1

你可以試試:

(?:^|\s+)(?![Bb])[^\s]* 

Demo

樣品:

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)); 
+0

或者只是'\ b [^ Bb] \ S *'。 –

+0

這可以按照預期在http://regexr.com/上運行。 Rawing建議的「\ b [^ Bb] \ S *」只是將文本與Bb分離成單獨的匹配。 –

+0

@JonathanSchmold你是對的,我的壞。但是這個正則表達式中的'(?:^ | \\ s +)'可以用'\ b'替代以提高可讀性並且沒有缺點(儘管如此,你還必須將'*'改成'+'以防止空火柴)。 –

0

這可能是一個解決辦法:

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*比賽開始Bb任何字由0或多個空格的包圍:T匹配您的規則

相關問題