2016-09-18 66 views
1

我正在尝试使用正则表达式在Java中查找字符串中的某些匹配项。实际的正则表达式是正则表达式在Java中的多行字符串中找到匹配项

^(interface \X*!) 

当我做到这一点的Java I使用

^(interface \\X*!) 

现在,这将引发近13指数我搜索板一点点,发现非法/不支持转义序列,它实际上应该做四个反斜杠以使其工作。但如果我使用

^(interface \\\\X*!) 

它不返回任何匹配。任何指针都会很有帮助。

只是一个样本匹配想

interface ABC 
temp 
abc 
xyz 
! 
+0

你能提供一个例子或解释什么应该匹配?你是否想要匹配“interface X”或“interface \ X”等字符串?使用此代码 – mangotang

+0

,我得到一个比赛,我没有得到一个例外: “界面\\ X” '公共类XXXX { 公共静态无效的主要(字串[] args){ 一个String = ; boolean b = s.matches(“^(interface \\ X *!)”); System.out.println(b); } }' – mangotang

+0

@mangotang样本会是这样的: 接口ABC 临时 ABC XYZ ! –

回答

1

为了匹配您的评论识别模式,使用Java是,这样的事情应该工作:

Pattern p = Pattern.compile("interface[^!]*!", Pattern.DOTALL); 
    Matcher m = p.matcher("interface ABC\ntemp\nabc\nxyz\n!"); // your test string 
    if (m.matches()) { 
     // 
    } 

此模式匹配的以“interface”开始的字符串,后跟零或多个除“!”之外的任何字符,后跟“!”。

Pattern.DOTALL告诉它,除了所有其他字符,“。”还应该匹配回车和换行符。有关DOTALL的更多信息,请参见this

+0

太棒了!辉煌!感谢您的正则表达式!有用。 –

相关问题