正则表达式匹配第一个字母并省略它

时间:2017-03-05 10:17:57

标签: java regex

我一直试图找到正则表达式的例子,但似乎无法找到一个: 我正在寻找正则表达式匹配字符串中的单词的第一个字符,如果匹配,我想省略它。例如

String example = "Blueberry strawberry peach Banana";

如果第一个字符或单词以b或B开头 - 字符敏感并不重要,请省略它并仅返回草莓桃。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

您可以在replaceAll中使用此正则表达式:

String input = "Blueberry strawberry peach Banana";

String repl = input.replaceAll("\\s*\\b[Bb]\\S*\\s*", "");
//=> strawberry peach

\\s*\\b[Bb]\\S*\\s*会匹配以Bb开头的任何单词,并在该单词的任意一侧包含0或更多空格。

答案 1 :(得分: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));

答案 2 :(得分: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);
}

您只保留与您的规则不符的字词(此处'以B或b'开头)