-1
A
回答
3
這是一個非常糟糕的主意。不是不可能的,但很難寫成一個通用的解決方案。
讓我們寫一個匹配2
和123
之間的所有數字的正則表達式。我們必須分別查看每個可能的數字。
- 1位:
[2-9]
- 2或更大 - 2位數:
[1-9][0-9]
- 任何兩位數字 - 3位數:
[1](?:[0-1][0-9]|[2][0-3])
- 無論是任何3位數字高達119
,或12x
其中0 <= x <= 3
。
一起:/\A(?:[2-9]|[1-9][0-9]|[1](?:[0-1][0-9]|[2][0-3]))\z/
這是可讀或維護?當然不是。
你可以使用嵌入式代碼:/\A([0-9]+)(?(?{ not($x <= $^N && $^N <= $y) })(*F))\z/
,但是這是相當愚蠢的爲好。
最好的解決方案是使用代碼應該如何處理代碼來完成。正則表達式在這裏根本就不是一個合適的工具。
my ($num) = $string =~ /\A([0-9]+)\z/ or die "no number in \$string";
if (not($x <= $num and $num <= $y)) {
die "Number $num out of range [$x .. $y]";
}
相關問題
- 1. perl正則表達式無效範圍
- 2. 正則表達式搜索,並在Perl
- 3. 用於匹配正則表達式的表達式範圍
- 4. 正則表達式數值範圍在Perl中失敗
- 5. vim正則表達式搜索和替換範圍[a-z] +等
- 6. 基於正則表達式搜索
- 7. 正則表達式搜索
- 8. Java正則表達式搜索值
- 9. 正則表達式:簡單的搜索正則表達式?
- 10. 正則表達式的貪婪範圍
- 11. 數字範圍的正則表達式
- 12. Java的正則表達式範圍
- 13. 正則表達式的具體範圍
- 14. 正則表達式的年份範圍
- 15. 正則表達式的數字範圍
- 16. 正則表達式或OR兩個範圍正則表達式
- 17. Perl IP地址範圍的正則表達式
- 18. 正則表達式匹配表達式貨幣數值範圍
- 19. 用於驗證日期範圍的Java正則表達式
- 20. 用於驗證範圍的遞歸正則表達式
- 21. 用於IPv4地址範圍的正則表達式
- 22. 用於驗證數字範圍的正則表達式
- 23. Perl的複雜的正則表達式搜索和替換嵌套表達式
- 24. 用於驗證類似範圍表達式的正則表達式
- 25. 使用正則表達式來使用Perl搜索XML文件
- 26. Perl將行加載到一個正則表達式的範圍內
- 27. Perl的正則表達式
- 28. Perl的正則表達式
- 29. 搜索和在Perl的正則表達式動態替換
- 30. Perl的正則表達式搜索和替換不符合
'除非($ X <= $ NUM && $ NUM <= $ Y){...}' – Qtax
@Qtax我知道 - 但我不使用'unless'任何更多的風格決定。 – amon
但你在'if's中使用'和'? ;) – Qtax