繁体   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