我一直试图找到正则表达式的例子,但似乎无法找到一个: 我正在寻找正则表达式匹配字符串中的单词的第一个字符,如果匹配,我想省略它。例如
String example = "Blueberry strawberry peach Banana";
如果第一个字符或单词以b或B开头 - 字符敏感并不重要,请省略它并仅返回草莓桃。
有什么建议吗?
答案 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*
会匹配以B
或b
开头的任何单词,并在该单词的任意一侧包含0或更多空格。
答案 1 :(得分:1)
您可以尝试:
(?:^|\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));
答案 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'开头)