簡體   English   中英

正則表達式在Java中的多行字符串中查找匹配項

[英]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.PatternJavadoc比較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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM