我有一个字符串:head1 [00100 - 00228]
我需要检索有方括号的值,即00100 - 00228
我用过:
String a="head1 [00100 - 00228]";
replaceAll("(\\[.*?\\])", ""))
但这已删除了方括号字符串。任何人都可以帮助我获得欲望输出吗?
答案 0 :(得分:5)
尝试以下代码
String a = "head1 [00100 - 00228]";
String out = a.substring(a.indexOf("[")+1,a.indexOf("]"));
希望这有帮助
答案 1 :(得分:1)
你可以:
例如:
String input = "head1 [00100 - 00228]";
// | follows by "["
// | | any text, reluctant quantifier
// | | | followed by "]"
Pattern p = Pattern.compile("(?<=\\[).+?(?=\\])");
Matcher m = p.matcher(input);
// iterating over all matches, in case input String contains more
// than one [...] entity
while (m.find()) {
System.out.println("Found: " + m.group());
}
<强>输出强>
Found: 00100 - 00228
答案 2 :(得分:1)
如果您知道括号前字符串的长度,我首先想到的是使用子字符串。但后来我想到了Tokenizer。它将字符串分解为标记,您可以检查每个字符串以查看它是否以括号开头。
以下是API http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
的链接答案 3 :(得分:1)
请检查这是否是您想要的
public static void main(String[] args) {
String s = "head1 [00100 - 00228]";
Pattern p = Pattern.compile(".*(\\[.*?\\]).*");
Matcher m = p.matcher(s);
if(m.matches()){
System.out.println(m.group(1));
}
}
答案 4 :(得分:1)
您应该查看使用匹配器 - 您可以找到匹配的字符串的多个部分:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class MatchingExample {
private static final Logger logger = Logger.getLogger(MatchingExample.class);
public static void main(String[] args) {
// Pattern is: look for square bracket, start capture, look for at least one non-],
// end capture, look for closing square bracket.
Pattern p = Pattern.compile("\\[([^\\]]+)\\]");
Matcher m = p.matcher("This is a [string] of [interest]");
while (m.find()) {
logger.info("We found: " + m.group(1));
}
}
}
这将打印:
We found: string
We found: interest