2014-04-12 19 views
1

在你们之前发布类似于前面提出的问题的提示之前,似乎有很多与正则表达式相关的问题,但似乎没有任何东西可以帮助我,或者至少我可以看到。简单的Java正则表达式匹配失败

我想解析字符串在JAVA使用PATTERNMATCHER,我真的没有喜悦。当我使用一些在线正则表达式测试网站时,我的正则表达式似乎与我的输入字符串匹配,但Java根本不符合我的表达式。

我的输入字符串是:

"Big apple" title="Little Apple" type="Container" url="http://malcolm.com/testing"

我使用匹配的正则表达式是".*" title="(.*)" type="Container" url="(.*)"

基本上我想拔出内的第二个文本和第四盘报价。总是会有4组引用以及内部和周围的文本。

我编码如下:

可变XMLSubstring包含上面的字符串(包括引号),并是说,即使我把它打印出来。

Pattern p = Pattern.compile(".* title=\"(.*)\" type=\"Container\" url=\"(.*)\""); 

m = p.matcher(XMLSubstring); 

它不会似乎是火箭科学,我尝试,但我拉我的头发试图调试血腥的东西。

我的正则表达式模式有什么问题吗? 我使用的代码有问题吗? 我只是一个白痴,应该立即停止编码?

编辑&更新:我发现了这个问题。我的字符串在它的末尾有一个空格,它打破了解析器!多么愚蠢,我认为基于此,我需要接受我的第三个建议并放弃编程。非常感谢您的协助。

+0

此外,您需要使用两个反斜杠\\到Java正则表达式中的转义字符。你应该首先阅读[Pattern的文档](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)... – jahroy

+0

感谢jahroy的反馈。事实上,我的发帖在所有三个位置都有,但不知何故,当我的问题发布时,前两个*不显示。 – Malcolm

+0

我的模式是“。*”title =“(。*)”type =“Container”url =“(。*)” – Malcolm

回答

3

试试这个,

String str="\"Big apple\" title=\"Little Apple\" type=\"Container\" url=\"http://malcolm.com/testing\""; 

    Pattern p=Pattern.compile(".* title=\\\".*\\\" type=\\\"Container\\\" url=\\\".*\\\""); 
    Matcher m=p.matcher(str); 
+0

所以你说问题是他没有逃避正则表达式解析器的引号字符?不对; '''在正则表达式中没有特别的含义,所以你只需要一个反斜杠来通过* Java *编译器。添加反斜杠并没有破坏任何东西,但它没有解决问题。你的正则表达式工作,因为(事实证明)原来的正则表达式没问题;这是输入被打破了。 –