我有一个简单的程序,我尝试使用正则表达式将Date与String匹配。这是我的程序
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");
}
但是当我运行这个程序时它会显示“Not Matched”但是当我在http://gskinner.com/RegExr/上尝试相同的事情时,它会显示匹配的字符串。请帮我理解我错在哪里。
我正面临着有趣的问题。我的程序的两个部分首先显示未匹配,而第二部分显示匹配。第一部分我从文本文件中复制了一个String。我无法理解这个问题。
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");
}
有趣的部分是你是否会从这里复制程序它对我来说也很好。
答案 0 :(得分:0)
检查您是否使用了正确的导入。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
答案 1 :(得分:0)
我检查过并发现Java对空间和非破坏空间(enter link description here)的处理方式不同,这就是为什么它不能为两个代码部分提供相同的结果。我在代码中添加了一行,然后它工作得很好。
textRegion = textRegion.replaceAll("\\u00a0"," ");
此代码用空格替换非破坏空间。正如我在程序中提到的那样,我从其他地方复制了文本,并且复制的文本具有那些非破坏空间而不是空间。但是,当你从这里复制代码时,它完全正常,因为你复制的代码没有非破坏空间。
感谢您的帮助!