我找不到任何用于使用正则表达式解析的好资源。有人可以告诉我。
我该如何解析这个陈述?
“断点10,main()at file.c:10”
我想获取子句“main()”或语句的第3个单词。
答案 0 :(得分:4)
这有效:
public void test1() {
String text = "Breakpoint 10, main () at file.c:10";
String regex = ",(.*) at";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
基本上,带有 group(1)的正则表达式.(.*) at
会返回值main ()
。
答案 1 :(得分:2)
假设您想要第三个字符串(如评论中所述),请先使用StringTokenizer
将其分解。这将允许您指定分隔符(默认为空格)
List<String> words = new ArrayList<String>();
String str = "Breakpoint 10, main () at file.c:10";
StringTokenizer st = new StringTokenizer(str); // space by default
while(st.hasMoreElements()){
words.add(st.nextToken());
}
String result = words.get(2);
返回main
如果您还需要()
,则在将空格定义为分隔符时,还需要使用下一个单词words.get(3)
答案 2 :(得分:1)
你见过standard Sun tutorial on regular expressions吗?特别是关于matching groups的部分将是有用的。
答案 3 :(得分:1)
当我想玩Regex
时,我转向这些答案 4 :(得分:0)
尝试:.*Breakpoint \d+, (.*) at
答案 5 :(得分:0)
嗯,正则表达式main \(\)
确实解析了这个。但是,我怀疑你想要在第一个comman之后和最后一个“at”之前的所有内容:,(.*) at
在 group(1)中为你提供由表达式中的括号打开的内容