簡體   English   中英

字符串與正則表達式不匹配

[英]String does not match regex

我希望正則表達式檢查是否有一個“單詞”([a-zA-Z0-9]),如果有括號,則必須在其中一個之后加上(id = [0-9] +)之類的東西這六個“關系”后跟另一個詞。 單詞和關系之間必須至少有一個空格。 單詞和關系之間以及(,),id,=和數字之間可以有更多的空格。 這三個字符串只是用來縮短行。

無論我嘗試什么,此代碼始終顯示false:

String first = "\\s[a-zA-Z0-9]+(\\s\\(\\sid\\s=\\s[0-9]+\\s\\))?\\s+";
String second = "(contains|contained-in|part-of|has-part|successor-of|predecessor-of)\\s+";
String third = "[a-zA-Z0-9]+(\\s\\(\\sid\\s=\\s[0-9]+\\s\\))?\\s";
Pattern linePattern = Pattern.compile(first + second + third);

public static void main(String[] args) {
    String a = "apple(id=107) contained-in tree";
    Matcher matcher = linePattern.matcher(a);
    boolean matches = matcher.matches();
    System.out.println(matches);
}

嘗試使用\\s*

\\s*[a-zA-Z0-9]+(\\s*\\(\\s*id\\s*=\\s*[0-9]+\\s*\\))?\\s*(contains|contained-in|part-of|has-part|successor-of|predecessor-of)\\s+[a-zA-Z0-9]+(\\s*\\(\\s*id\\s*=\\s*[0-9]+\\s*\\))?\\s*

Pattern linePattern = Pattern.compile("\\s*[a-zA-Z0-9]+(\\s*\(\\s*id\\s*=\\s*[0-9]+\\s*\\))?\\s*(contains|contained-in|part-of|has-part|successor-of|predecessor-of)\\s+[a-zA-Z0-9]+(\\s*\\(\\s*id\\s*=\\s*[0-9]+\\s*\\))?\\s*");

暫無
暫無

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

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