簡體   English   中英

Java中的RegEx負查找

[英]RegEx Negative LookBehind in Java

我試圖匹配以.xsd結尾但不以form.xsd結尾的字符串列表,我使用以下regEx:

ArrayList<String> files = new ArrayList<String>();
files.add("/abadc/asdd/wieur/file1.form.xsd");
files.add("/abadc/asdd/wieur/file2.xsd");

Pattern pattern = Pattern.compile("(?<!form{0,6})\\.xsd$");
for (String file : files) {                                 
    Matcher matcher = pattern.matcher(file);
    if(matcher.find())                                                      
    {                                                                       
        System.out.println("Found >>>> "+file);    
    }                                                                                                                                         
}

我希望將file2打印出來,但是我沒有得到任何結果。 我在這里做錯什么了嗎? 我在在線java regEx測試器中嘗試了相同的表達式,但得到了預期的結果,但是在程序中卻沒有得到結果。

好吧,您的代碼示例對我有用。...但是'm'之后的{0,6}沒有意義.....為什么會有0到6個'm'?

表達方式:

"(?<!form)\\.xsd$"

會更有意義,但隨后我還將更改您的循環以使用matches()方法,並相應地更改正則表達式:

Pattern pattern = Pattern.compile(".+(?<!form)\\.xsd");
for (String file : files) {                                 
    Matcher matcher = pattern.matcher(file);
    if(matcher.matches())                                                      
    {                                                                       
        System.out.println("Found >>>> "+file);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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