回答
根據表達式,它匹配任何具有6位或4位數的字符串。
但是,由於您使用的是(。*),表達式將匹配任何至少有4位數的字符串。
要匹配數具有6個或4位可以使用:
/^\d{4}(\d{2})?$/
字面上:任何數量的字符,其與準確6個號碼或正好4個號碼結束。
技術上: 的奇怪的事情是,.*
將允許與4號或以上的比賽結束任何有任何數量在此之前的數字,所以什麼?
更確切地說:任何數量的字符在**結尾至少有** 4個數字。 – 2011-06-02 11:39:02
的EXPR說:
(.*) take any number of arbitrary characters followed by ([0-9]{6}) six numbers
- 或 -
(.*) take any number of arbitrary characters followed by ([0-9]{4}) four numbers
- 這意味着隨後6個或4位數
- 你認爲你可以寫這樣的
(.*)(\d{4}|\d{6})
任何字符但捕獲組會改變
相信這意味着匹配任一
的後面是6位數字的任何字符(.*
)的任意數([0-9]{6}
)
或(|
)
的任何字符的任意數目( .*
),接着是4位數字([0-9]{4}
)
.
=任何字符
*
指0,1或許多 - 在這種情況下...查找「的Kleene閉包」
[0-9]
表示數字0-9
{6}
意味着最後一個圖案被重複6次
...
是不是後跟6位數字的字符串也不符合字符串後跟4位數字的模式?如果這會導致問題,您可以在每個模式的末尾添加空白字符或行尾。
我可能已經做出假設你寫等於
((.*)([0-9]{6}))|((.*)([0-9]{4}))
見這意味着什麼其他的答案。
無論是否有更簡潔的寫法,所有方法幾乎都會編譯爲相同的DFA,因此執行方式相同。這種方式至少是清楚的。你無法理解這一點,爲什麼你想要更簡潔?
正則表達式對我有意義的唯一方法是如果你試圖從字符串中提取一定數量的連續數字。如果字符串中有多個可能的匹配項,則需要最後一個匹配項。
在第一替代的(.*)
開始吃掉整個字符串,但隨後回退足夠遠,使([0-9]{6})
捕捉它們的最後六位。如果它一直沒有找到匹配就退到開頭,第一個備選報告失敗。控制然後傳遞到第二個替代方案,它使用相同的技術來嘗試和最後一個匹配四個數字。如果失敗,整體匹配嘗試失敗。
我開始說正則表達式試圖匹配字符串的末尾處的六位或四位數字,因爲這是人們使用該技術的常見原因。但是這要求它像@ Cybernate的正則表達式那樣在最後停留。在你的情況是這樣的:
^(?:(.*)([0-9]{6})|(.*)([0-9]{4}))$
開始錨 - ^
- 不要求進行匹配,但只允許每一個替代的匹配嘗試提高效率。一些正則表達式的口味足夠聰明,可以認識到如果(.*)
在字符串的開頭不匹配,那麼在第二個位置,第三個位置等嘗試它沒有意義,但是你不能指望它。
編輯:我只是注意到java
標記。如果你在Java的matches()
方法中使用這個正則表達式,你不需要添加錨;該方法自動錨定兩端的每個匹配。如果您不希望你在比賽結束錨,你就必須「墊」更點明星的正則表達式:
(.*)([0-9]{6}).*|(.*)([0-9]{4}).*
- 1. 有人可以向我解釋這個正則表達式
- 2. 有人可以解釋這個正則表達式QRegExp exp(「// [^ \ n] *」);
- 3. 有人可以解釋這個正則表達式做什麼?
- 4. 有人可以解釋這個正則表達式
- 5. 有人能爲我解釋這個JavaScript正則表達式嗎?
- 6. 有人可以幫助解釋JavaScript中的這個正則表達式嗎?
- 7. 有人可以解釋這個命名的組正則表達式嗎?
- 8. 任何人都可以解釋我這個正則表達式
- 9. 任何人都可以解釋這個正則表達式
- 10. 任何人都可以解釋這個正則表達式
- 11. 任何人都可以向我詳細解釋這個正則表達式嗎?
- 12. 有人可以幫我改變這個正則表達式嗎?
- 13. 任何人都可以解釋這個正則表達式模式?
- 14. 解釋這個R正則表達式
- 15. 解釋這個正則表達式
- 16. 解釋這個正則表達式:(?:| {} I)
- 17. 有人可以幫我解讀這個常規正則表達式嗎?
- 18. 有人可以解釋這個宏嗎?
- 19. 有人可以幫我解決一些正則表達式嗎?
- 20. 有人可以向我解釋這個正則表達式的工作原理嗎? (總新手在這裏)
- 21. 任何人都可以解釋我這個正則表達式的含義
- 22. 可以請一些人解釋一下這個elisp正則表達式
- 23. 任何人都可以解釋爲什麼這個正則表達式失敗?
- 24. 任何人都可以解釋我如何形成正則表達式並解釋這個正則表達式嗎?
- 25. 有人可以幫我寫一個正則表達式嗎?
- 26. 有人可以請解釋一個數組的正則表達式過濾
- 27. 有人可以解釋這一點嗎?
- 28. 這個正則表達式可以更有效嗎?
- 29. 有人可以解釋如何解釋這個logcat嗎?
- 30. 有人可以解釋Angular as-for-in表達式符號嗎?
http://www.regular-expressions.info/reference .html – jball 2011-06-01 19:43:19