簡體   English   中英

使用JAVA中的模式和匹配器的RegEx

[英]RegEx with pattern and matcher in JAVA

我有一個text / html文件,我需要一些信息。 因此,我在下面的代碼中使用RegEx。

我的問題是,我希望模式p和模式l的結果在同一匹配器中,因為結果的順序非常重要。 在我的代碼中,System.output的順序錯誤,因為他先打印模式p的結果,然后再打印模式l的結果。

如何解決這個問題?

        String pattern1 = "<img class=\"galleryElement shown\" data-src=\"";
        String pattern2 = "\" src=\"\" />";
        String pattern3 = "<img class=\"galleryElement shown\" src=\"";
        String pattern4 = "\" />";
        Pattern p = Pattern.compile(Pattern.quote(pattern1) + "(.*?)" + Pattern.quote(pattern2));
        Pattern l = Pattern.compile(Pattern.quote(pattern3) + "(.*?)" + Pattern.quote(pattern4));
        Matcher m = p.matcher(res.toString());
        while (m.find()) {
            System.out.println(m.group(1));
        }

        Matcher n = l.matcher(res.toString());
        while (n.find()) {
            System.out.println(n.group(1));
        }

由於您尚未定義規則,因此請嘗試一下。 讓我知道您是否需要對模式進行任何修改:

<img class="galleryElement shown" (data-)?src="([^"]*?)"

在線演示

模式說明: (data-)?src="([^"]*?)"

  (                        group and capture to \1 (optional):
    data-                    'data-'
  )?                       end of \1
  src="                    'src="'
  (                        group and capture to \2:
    [^"]*?                    any character except: '"' (0 or more times (least))
  )                        end of \2
  "                        '"'

樣例代碼:

String pattern = "<img class=\"galleryElement shown\" (data-)?src=\"([^\"]*?)\"";
Pattern p = Pattern.compile(pattern,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("<img class=\"galleryElement shown\" data-src=\"abc\" />");
while (m.find()) {
    System.out.println(m.group(2));
}

暫無
暫無

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

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