簡體   English   中英

空格匹配正則表達式

[英]white space matching regular expressions

我有以下兩種模式將html標記名稱與可能的前導空格匹配。 [ ]*在命名組<doubletag>內的第一個模式不起作用,但是[ ]*緊跟在標記符號"<"之后的第二個模式有效。 我不知道為什么第一個不起作用。

 String s = "<      pre href = "dajflka" >ld fjalj09u293 ^% </pre>";
 Pattern ptr = Pattern.compile("(<(?<doubletag>[ ]*[a-z]+)([ \\d\\s\\w\\W[^>]])*>)(.*)(</\\k<doubletag>[ ]*>)");
 Pattern ptr = Pattern.compile("(<[ ]*(?<doubletag>[a-z]+)([ \\d\\s\\w\\W[^>]])*>)(.*)(</\\k<doubletag>[ ]*>)");
 Matcher match = ptr.matcher(s);
 if(match.find()){
        System.out.println("Found");
  }

\\s是空格,如果這是您想要的,請放[\\s]*

實際上,第一個模式可以找到前導空白。 如果僅嘗試第一個模式的第一組:

String s = "<      pre href = \" dajflka \" >";
Pattern pattern = Pattern.compile("<(?<doubletag>[ ]*[a-z]+)([ \\d\\s\\w\\W[^>]])*>");
Matcher match = pattern.matcher(s);
if (match.find()) {
    System.out.println("Found");
    System.out.println(match.group("doubletag"));
}

您將獲得doubletag

"      pre"

問題是,在</pre> ,它沒有前綴空格,因此(</\\k<doubletag>[ ]*>)(</\\k<doubletag>[ ]*>) 這就是為什么第一個模式不能匹配整個字符串的原因。

暫無
暫無

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

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