簡體   English   中英

Java正則表達式獲取子字符串

[英]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));
    }
}

基本上.(.*) atgroup(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)

您看過有關正則表達式標准Sun教程嗎? 特別是有關匹配組的部分將很有用。

  1. 好的網站regular-expressions.info
  2. 好的在線測試儀regexpal.com
  3. Java http://download.oracle.com/javase/tutorial/essential/regex/

我想和Regex一起玩的時候轉向這些

嘗試: .*Breakpoint \\d+, (.*) at

好吧,正則表達式main \\(\\)會對此進行解析。 但是,我懷疑您希望第一個逗號之后和最后一個“ at”之前的所有內容: ,(.*) at給您在group(1)中由表達式中的括號打開的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM