[英]java regular expression get substring
我找不到用於解析正則表達式的任何好資源。 有人可以給我指路。
如何解析此語句?
“斷點10,位於file.c:10的main()”
我想獲取子字符串“ main()”或該語句的第三個單詞。
這有效:
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));
}
}
基本上.(.*) at
與group(1)的正則表達式.(.*) at
)返回值main ()
。
假設您想要字符串的第三個單詞 (如評論中所述),請首先使用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)
我想和Regex一起玩的時候轉向這些
嘗試: .*Breakpoint \\d+, (.*) at
好吧,正則表達式main \\(\\)
會對此進行解析。 但是,我懷疑您希望第一個逗號之后和最后一個“ at”之前的所有內容: ,(.*) at
給您在group(1)中由表達式中的括號打開的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.