簡體   English   中英

正則表達式索引0它是如何工作的

[英]Regex index 0 how it exactly works

通過編譯以下內容:

 System.out.println(Pattern.matches(".?(\\d)$","3"));

它返回true,因為在3之前什么都沒有? 檢查一個或零。 但是3已經是輸入的第一個字符,從0開始到1結束。如何在jvm之前識別出3之前沒有任何內容。例如以下內容。

的System.out.println(Pattern.matches( “你好”) “*”;

它也返回true,但只有最后一個字符與“nothing”匹配。 在字符串的開頭不應該有“無”字符,只是在字符串的末尾?

  1. 這不是關於JVM的。 這是關於Java正則表達式。
  2. 正則表達式“。*”表示“匹配0個或更多字符”。 很容易滿足這一點,因為空字符串有0個字符,因此滿足了這一點。 Java正則表達式是選擇延遲並匹配空字符串,還是貪婪並匹配整個字符串取決於Java正則表達式的實現。 如果您閱讀這篇優秀的文章( http://docs.oracle.com/javase/tutorial/essential/regex/quant.html ), 您會發現Java中的“。*”模式被認為是“不情願”的量詞,並且更喜歡采取盡可能少的
  3. 根據該寫入中的信息,您可以看到類似“。{0,}”的模式是同一表達式的貪婪版本。 如果這對你來說真的是一個問題,也許你會想要使用它。

你沒有正確解釋你的正則表達式。 沒有“沒什么特征”這樣的東西。 相反,您的模式顯示:任何字符串后跟字符串末尾的數字字符串末尾的數字。

當然,“3”非常適合第二種描述。

matches方法嘗試完全匹配輸入。

所以沒有必要使用^$ ..

暫無
暫無

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

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