我的目标是读取字符串并忽略括号中的文本。
public static void main(String[] args) {
Pattern checkRegex= Pattern.compile("([a-zA-Z]{3,30}\\s*){2}");
Matcher regexMatcher=checkRegex.matcher("James Hunt(Skateboarder)");
while(regexMatcher.find()){
System.out.println(regexMatcher.group().trim());
}
目前的输出是:
詹姆斯亨特溜冰板
基本上我想要的是输出只是“James Hunt”。 在这种情况下使用什么是合适的Regex模式?
答案 0 :(得分:3)
这将适用于给定String中的所有非嵌套括号:
String input = "James Hunt(Skateboarder)";
String output = input.replaceAll("\\([^)]*?\\)", "");
答案 1 :(得分:3)
基本上我想要的是输出只是“James Hunt”。 在这种情况下使用什么是合适的Regex模式?
尝试正则表达式:^[^(]*
答案 2 :(得分:0)
如果您不必使用正则表达式,您可以通过一个简单的迭代获取数据
String data="some (sentence (with) nested) paranhesis";
StringBuilder buffer=new StringBuilder();
int parenthesisCounter=0;
for (char c:data.toCharArray()){
if (c=='(') parenthesisCounter++;
if (c==')') parenthesisCounter--;
if (c!=')' && c!='(' && parenthesisCounter==0)
buffer.append(c);
}
System.out.println(buffer);
输出:
some paranhesis