簡體   English   中英

正則表達式不匹配通配符

[英]regex not matching wildcard

我有以下HTML:

<tr><td><font color="#306eff">P: </font>9283-1000<font color="#306eff">&nbsp;&nbsp;

或(換行符)

<tr><td><font color="#306eff">P: </font>9283-1000

<font color="#306eff">&nbsp;&nbsp;

我去了regexpal.com並輸入了以下正則表達式:

P: </font>(.*?)<font

它匹配。 但是當我用Java進行操作時,它不匹配:

    Pattern rP = Pattern.compile(">P: </font>(.*?)<font");
    Matcher mP = rP.matcher(data);

    if (mP.find()) {
        System.out.println(mP.group(1).trim());
    }

我在不同場合嘗試過多個正則表達式,它們根本無法在Java中工作。 有什么建議么? 謝謝!

你的作品對我來說很好。

    public static void main(String[] args) {
        String data = "<tr><td><font color=\"#306eff\">P: </font>9283-1000<font color=\"#306eff\">&nbsp;&nbsp;";
        Pattern rP = Pattern.compile(">P: </font>(.*?)<font");
        Matcher mP = rP.matcher(data);

        if (mP.find()) {
            System.out.println(mP.group(1).trim());
        }
    }

打印: 9283-1000

我想問題可能出在如何將data饋入程序中。
因為您可以從此輸出中看到代碼本身就可以。

默認情況下,點與換行符不匹配。

使用Pattern rP = Pattern.compile(">P: </font>(.*?)<font", Pattern.DOTALL);

參考這里

嘗試使用此正則表達式:

(?ims).*?>P: </font>(.*?)<font.+

樣例代碼

public static void main(String[] args) {
    String data="<tr><td><font color=\"#306eff\">P: </font>9283-1000<font color=\"#306eff\">&nbsp;&nbsp;";
    Pattern rP = Pattern.compile("(?ims).*?>P: </font>(.*?)<font.+");
    Matcher mP = rP.matcher(data);

    if (mP.find()) {
          System.out.println(mP.group(1).trim());
    }
}

輸出量

9283-1000

嘗試這個 :

String data="<tr><td><font color=\"#306eff\">P: </font>9283-1000<font color=\"#306eff\">&nbsp;&nbsp;";
Pattern rP = Pattern.compile(">P: </font>(.*?)<font");
Matcher mP = rP.matcher(data);

if (mP.find()) {
      System.out.println(mP.group(1).trim());
}

在Java中,唯一的區別在於轉義字符。

暫無
暫無

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

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