2015-09-23 28 views
0

我想解析一个文件,列出与适用的正则表达式,接受正则表达式字符串变量,然后在表达式中使用它。但是在这样做的时候,我面临着\的麻烦,并且无法使用它们。下面是使用代码的块。你能告诉我为什么它为“”?©“。*”“而不是”“©?\\ s * \\ w +。*”“。该表达式另有效。在一个变量中使用正则表达式

String valuePattern = attrs.getNamedItem("valuePattern").getTextContent(); 
if (newNodeName == "") { 
    System.out.println(valuePattern); 
    // System.out.println("Inside Delete node..."); 
    if (valuePattern == "" 
     || (valuePattern != "" && node.getTextContent().matches(valuePattern))) { 
     System.out.println("in match"); 
     System.out.println("Deleting: " + node.getTextContent()); 
     node = null; 
    } 
+5

请显示一个简短的*完整*程序来展示问题。请注意,使用'=='和'!='比较字符串几乎肯定不会做你认为它做的事情......(而且,你的问题与XML有什么关系,这完全不清楚。找出正则表达式为什么与某些文本匹配或不匹配的问题,文本的来源无关紧要。) –

+0

请提供[MVCE(最小完整可验证示例)](http:// stackoverflow。 COM /帮助/ MCVE)。什么是'node.getTextContent()'? –

回答

0

正如Jon Skeet指出的,首先,你应该修复你的字符串比较。

String valuePattern = attrs.getNamedItem("valuePattern").getTextContent(); 
if (("").equals(newNodeName) { 
    System.out.println(valuePattern); 
    if (("").equals(valuePattern) 
     || (!("").equals(valuePattern) && node.getTextContent().matches(valuePattern))) { 
     System.out.println("in match"); 
     System.out.println("Deleting: " + node.getTextContent()); 
     node = null; 
    } 
} 
+0

如果将null与早期语法进行比较,则没有问题。因此这不是问题。 – user3345621

相关问题