簡體   English   中英

Java正則表達式不匹配

[英]Java Regular Expression is Not Matching

我有一個簡單的程序,在其中嘗試使用正則表達式將Date與字符串匹配。 這是我的程序

Pattern r = Pattern.compile("((?:january|february|march|april|may|june|july|august|september|october|november|december)\\s*\\d{1,2}\\,\\s*\\d{4})\\s*\\|\\s*UPDATED", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
String textRegion = "<span>India Today Online</span>"
            + " New Delhi, October 28, 2013 | UPDATED 11:42 IST "
            + "</div>";
Matcher m = r.matcher(textRegion);
if (m.find()) {
    System.out.println("Matched");
} else {
    System.out.println("Not Matched");
}

但是,當我運行該程序時,它顯示“不匹配”,但是當我在http://gskinner.com/RegExr/上嘗試相同的操作時,它顯示了匹配的字符串。 請幫助我了解我錯了。

我面臨着一個有趣的問題。 我的程序有兩個部分,第一部分顯示不匹配,第二部分顯示匹配。 在第一部分中,我從文本文件中復制了一個字符串。 我無法理解該問題。

String textRegion = "<span>India Today Online</span>"
                + " New Delhi, October 28, 2013 | UPDATED  IST"
                + "</div>";
        Pattern r = Pattern.compile("((?:january|february|march|april|may|june|july|august|september|october|november|december)\\s*\\d{1,2}\\,\\s*\\d{4})\\s*\\|\\s*UPDATED", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);

         System.out.println(textRegion);
        Matcher m = r.matcher(textRegion);
        if (m.find()) {
            System.out.println("Matched");
        } else {
            System.out.println("Not Matched");
        }



        Pattern r1 = Pattern.compile("((?:january|february|march|april|may|june|july|august|september|october|november|december)\\s*\\d{1,2}\\,\\s*\\d{4})\\s*\\|\\s*UPDATED", Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
        String textRegion1 = "<span>India Today Online</span>"
                    + " New Delhi, October 28, 2013 | UPDATED  IST"
                    + "</div>";
        Matcher m1 = r1.matcher(textRegion1);
        if (m1.find()) {
            System.out.println("Matched");
        } else {
            System.out.println("Not Matched");
        }

有趣的是,如果您要從此處復制程序,它對我來說也很好。

檢查是否使用正確的導入。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

我檢查發現,Java對空格和不間斷空格的處理不同( 在此處輸入鏈接描述 ),這就是為什么兩個代碼部分都沒有給出相同結果的原因。 我在代碼中添加了一行,然后運行得很好。

textRegion = textRegion.replaceAll("\\u00a0"," ");  

此代碼用空格代替不間斷空格。 正如我在程序中提到的那樣,我從其他地方復制了文本,並且復制的文本包含那些不間斷的空格而不是空格。 但是,當您從此處復制所有代碼時,由於復制的代碼沒有不間斷空間,因此效果很好。

感謝幫助!

暫無
暫無

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

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