[英]regex to find matches in a multiline string in Java
我正在嘗試使用正則表達式在Java中的字符串中查找匹配項。 實際的正則表達式是
^(interface \X*!)
當我這樣做Java我使用
^(interface \\X*!)
現在,這會在索引13附近拋出非法/不支持的轉義序列。我搜索了一些板,發現它實際上應該是四個反斜杠才能使它工作。 但如果我使用
^(interface \\\\X*!)
它不返回任何匹配項。 任何指針都會非常有用。
只是樣本匹配就好
interface ABC
temp
abc
xyz
!
\\X
構造來自Perl,而java.util.Pattern的Javadoc在比較Perl 5部分中明確指出它不受支持。
在Java中,您必須使用不同的構造。 但是這部分已在https://stackoverflow.com/a/39561579中得到解答。
為了匹配您在注釋中標識的模式,使用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更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.