正則表達式應該允許所有其他數字。 感謝如何創建一個正則表達式來排除2,102和103
回答
你用牙籤砍倒一棵樹,或者用正則表達式解析XML或COBOL編寫的操作系統,或做任何事情與帕斯卡爾:-)
你不要用同樣的方法「T。你使用正確的工具的工作,這將是這樣的(僞代碼):
if val = 2 or val = 102 or val = 103:
return
# Process other values.
爲什麼你會回答「你能做我的工作嗎?」 196k聲望隊友的問題?我喜歡你的觀點和pascal評論 – kommradHomer 2012-03-30 09:25:44
這是簡單得多,允許任何數字,然後排除你不想正則表達式以外的人。
while (/([0-9]+)/g) {
next if $1 == 2 || $1 == 102 || $1 == 103;
say $1;
}
但它可以做到。
1.複雜圖案,
/
...
(?<![0-9]) # Possible to omit in some circumstances.
(
(?: 0
| [3-9][0-9]*
| 2[0-9]+
| 1(?:[1-8][0-9]*)?
| 10([014-9][0-9]*)?
| 10[23][0-9]+
)
)
(?![0-9]) # Possible to omit in some circumstances.
...
/xg
2.嵌入Perl代碼到圖案
/
...
(?<![0-9]) # Possible to omit in some circumstances.
([0-9]+)
(?![0-9]) # Possible to omit in some circumstances.
(?(?{ $^N == 2 || $^N == 102 || $^N == 103 })(?!))
...
/xg
3.負先行
/
...
(?<![0-9]) # Possible to omit in some circumstances.
(?!(?:2|102|103)(?![0-9]))
([0-9]+)
...
/xg
棘手的部分是使當然,
- 20場比賽
- 102沒有得到匹配的爲10
@ user1299558,我加入到我的答案。 – ikegami 2012-03-29 01:42:49
嗯,你的意思是得到一個數,每行,扔掉那些是「2」,等等?
if ($a =~ /^(\s)*(10)?([23])(\s*)$/ || $a =~ /^(\s)*(2)(\s)*$/)
{
#bad string! do whatever
}
else
{
#good string!
}
這符合
2
102
103
也就是說,只有你的 「壞」 的數量,也許一些空格線。 「111103444」,被認爲是「好一些」,所以如果你的意思是過濾掉你的壞號碼嘗試像
$a =~ s/^(?:102|103|2)$//g;
這可能不是在技術上是一個純粹的正則表達式...
爲什麼有人說不使用Perl的正則表達式?
真正則表達式編譯到一個NFA/DFA:
length 1:
[0-13-9]
length 2:
[0-9][0-9]
length 3:
[02-9][0-9][0-9]
10[0-14-9]
1[1-9][0-9]
length 4 or more:
[0-9][0-9][0-9][0-9]+
combine:
[0-13-9]|[0-9][0-9]|[02-9][0-9][0-9]|10[0-14-9]|1[1-9][0-9]|[0-9][0-9][0-9][0-9]+
grep line for validation:
grep -E '^([0-13-9]|[0-9][0-9]|[02-9][0-9][0-9]|10[0-14-9]|1[1-9][0-9]|[0-9][0-9][0-9][0-9]+)$'
- 1. 如何創建一個正則表達式來排除特定的字符串?
- 2. 正則表達式來排除一些
- 3. 正則表達式排除一個字
- 4. 正則表達式排除一個詞
- 5. 從另一個正則表達式中排除一個正則表達式
- 6. 正則表達式來排除字符
- 7. 正則表達式來排除URL的
- 8. 正則表達式來排除文件
- 9. 正則表達式來排除匹配
- 10. 正則表達式來排除的話
- 11. 正則表達式排除&#
- 12. 正則表達式排除
- 13. 正則表達式:排除
- 14. 正則表達式 - 排除
- 15. 正則表達式排除
- 16. 創建一個從正則表達式
- 17. 如何創建一個正則表達式來刪除下劃線
- 18. 正則表達式排除komma和點
- 19. 如何爲url創建一個正則表達式來創建Google Analytics目標?
- 20. 正則表達式排除表達
- 21. 如何從正則表達式組中排除一個字符?
- 22. 創建一個正則表達式來添加兩個數字
- 23. 正則表達式來刪除[]和
- 24. 如何創建php正則表達式
- 25. 如何創建此正則表達式
- 26. 如何創建正則表達式
- 27. 創建正則表達式
- 28. 正則表達式創建
- 29. 如何使用正則表達式來排除一個url路徑?
- 30. 正則表達式來排除串並表達
我只是匹配所有的數字,然後明確地檢查是否匹配的數字是任何這些。 (另外,SO精神上有點過分。) – Corbin 2012-03-29 00:53:57
* Re:關閉問題。*這個問題並不含糊或以任何方式含糊不清。不要關閉你不瞭解的東西。 – Kaz 2012-03-30 06:06:10
Kaz:它[根據堆棧溢出網站常見問題]不完整(http://stackoverflow.com/faq#close)。 [提出一個好問題的指導方針](http://stackoverflow.com/questions/how-to-ask)指出之前要做一些研究並展示迄今的進展。這在上面的問題中是看不到的,downvotes /最終關閉是合理的。 – daxim 2012-03-30 06:40:00