回答
[\w\W]
和[\d\D]
用於像JavaScript這樣的語言,其中沒有dotall選項。 它匹配所有字符,包括換行符,不像.
它匹配所有,但換行符。
\w\W or \d\D -> matches everything including newline characters
. -> matches everything except newline characters unless
's' (dotall modifier) is specified
(\d+|) or (\d+)? -> matches 1 or more digits OR any position (null)
It could simply be written as '(\d*)'
'multiline'和'dotall'完全不同。 '.'不會與只有'multiline'選項設置的換行符匹配。 –
應該只是說dotall。我的錯誤 –
我犯了一個錯誤,在第一行中錯過了一個「+」。 – user1990553
第二個是挺有意思的,我想談談它的東西:
[\w\W]
和[\d\D]
是等價的,它們相當於[\s\S]
也。\W
是\w
的補碼字符集,同樣適用於\D
-\d
對和\S
-\s
對。因此,放在一起時,他們將毫無例外地匹配任何角色。它們通常用於沒有構造「匹配任何字符,毫無例外」的情況。 JavaScript就是這種情況的一個例子。在
[^]
中也有一個不太知名且非常混亂的構造,在其他類型中通常無效。點
.
一般匹配任何字符,但新行\n
。根據不同的語言,它可能會排除更多的字符。對於Java,它排除
\n
,\r
,\u0085
,\u2028
,並\u2029
。所以.
相當於[^\n\r\u0085\u2028\u2029]
對於JavaScript,點
.
將排除\r
,\u2028
,並\u2029
除了\n
。所以.
相當於[^\n\r\u2028\u2029]
一些語言將有一個模式,使其
.
匹配任何字符,無一例外。它在Java和Python中被稱爲DOTALL
模式,在C#和Perl中被稱爲SingleLine
模式。
.
的行爲因語言而異。一般而言,他們都同意在「正常」模式下排除\n
,但在選擇排除更多時可能略有不同。
你沒有說你正在使用哪種語言,所以我將假定Perl。
(\d+|)
相當於(\d*)
。它匹配0或更多位數的序列並將結果捕獲到$1
。(\d)?
匹配0或1位數字。如果它匹配一個數字,它會將其放入$1
;否則$1
將是undef
(如果您想消除?
,則可以將其重寫爲(?:(\d)|)
)。[\w\W]
和[\d\D]
是等同的,匹配任何字符。.
默認等效於[^\n]
(匹配任何字符,但換行符)。如果你真的想匹配任何字符,你應該使用.
並指定/s
標誌,這使得.
匹配任何字符。
- 1. 是什麼,這些正則表達式
- 2. 這是什麼正則表達式?
- 3. Lex這是什麼正則表達式
- 4. 這是什麼正則表達式?
- 5. 這是什麼正則表達式?
- 6. 這將是什麼正則表達式?
- 7. ,這是什麼陣正則表達式
- 8. 這是什麼javascript正則表達式?
- 9. 這將是什麼正則表達式
- 10. 這是什麼javascript正則表達式
- 11. 這些正則表達式是什麼意思?
- 12. 這些正則表達式的含義是什麼?
- 13. 什麼是捕捉這些元素的正則表達式?
- 14. 這些qr {}正則表達式是什麼意思?
- 15. JavaScript中這些正則表達式的含義是什麼?
- 16. 這些Perl正則表達式是什麼意思?
- 17. 什麼是MySQL的SQL正則表達式這個表達式
- 18. 正則表達式的正則表達式是什麼?
- 19. 這個正則表達式做什麼?
- 20. 這個正則表達式做什麼?
- 21. 這是什麼Java正則表達式代碼在做什麼?
- 22. 這是什麼javascript正則表達式在做什麼?
- 23. 這些正則表達式爲什麼不按預期工作?
- 24. 這些正則表達式有什麼區別
- 25. 這些在PHP正則表達式中做什麼?
- 26. 什麼正則表達式可以匹配這些數據?
- 27. Java正則表達式 - 這些部分各有什麼作用?
- 28. 這些正則表達式爲什麼不同?
- 29. 爲什麼這些正則表達式的行爲不同
- 30. 這個正則表達式的mod_security規則是幹什麼的?
選擇什麼? –
請參閱http://regex101.com/ – maerics
或http://rubular.com/ ...並選擇最簡單,最容易理解的。 –