如何創建一個正則表達式來測試一個數是否可以被我整除(2 < = i < = 10),共8個表達式?人們只能假設整數是正數。您可以使用符號[]和[^],?,*和+,|和()。 PHP的ereg函數應該接受它。正則表達式和可分性
回答
除非這是一個家庭作業問題,否則沒有理由在這種情況下使用正則表達式。
使用模數運算符,它會給出值的其餘部分除以。
if($number%$i) { "This runs if $number modulus is not 0 (not evenly divisible by $i)" }
else { "This runs if $number modulus is 0 (evenly Divisible by $i)" }
編輯:哦,這是一個面試問題。是的,這裏的正確答案是「這不是解決這個問題的正確工具!」
@Alok具有以下正確的解決方案。正則表達式 - >有限狀態機。 – Lotus
此,如果你轉換到一元(1
= 1
,2
= 11
,3
= 111
,4
= 1111
等)的數量是唯一可能的。
然後你可以檢查你的號碼是否匹配^(1{divisor})*$
。如果你不能使用{}
,你需要把它拼出來。因此,要檢查4的可分性,請嘗試匹配^(1111)*$
等。
儘管如此,沒有人在他們的正確思想中這樣做。如果你的面試官要求你使用ereg
,那麼他的正則表達式知識就有幾十年的歷史了。
我想我需要第一個reqexp將4_10轉換爲1111_2。一般的轉換器可能很難做到。 – amateurprogrammer
@amateurprogrammer:這是絕對不可能使用正則表達式。但使用正則表達式在10進制中檢查除數也是不可能的。 –
@Tim,對於某些特定的整數是可能的,例如2,5,10。但這可能不是面試官所期望的。 –
所以,顯然你不會使用這個正常的正則表達式...但是人們會做瘋狂的事情。有一個正則表達式在那裏,以確定是否一個數是素...
至於如何去解決,如果你被允許代表另一種格式的數量想法...
- 轉換數爲字符串與多個1S等於數的大小的(4 = 「1111」)
- 的regexp
/^(1{$divisor})+$/
作爲樣品中的Tcl
proc testit {value} {
set value1 [string repeat 1 $value]
for {set i 2} {$i <= 10} {incr i} {
set matches [regexp "^(1{$i})+$" $value1]
puts "${i}: $matches"
}
}
由於您不能使用{}
結構,因此可以用等於i的數字替換1{$i}
。
沒有正則表達式可以確定字符串是否是素數的十進制表示形式。使一個匹配素數的一元表示(並且容易使其與一元表示的複合體相匹配)並不難。 – Charles
@Charles在他的評論中的回答是不正確的。這裏是你如何建立一個可分性的正則表達式3:http://alokmenghrajani.github.com/triple/。你可以做類似的東西7.
這完全是正確的答案。謝謝你,阿洛克。 – Lotus
- 1. C#正則表達式分割和正則表達式
- 2. VBA - 正則表達式拆分可變
- 3. Javascript lastIndex正則表達式屬性到PHP正則表達式
- 4. 正則表達式:性能
- 5. 正則表達式和彈性搜索
- 6. Php和正則表達式性能
- 7. 是否有可能使用正則表達式分析正則表達式
- 8. 正則表達式:替換部分正則表達式匹配
- 9. 區分正則表達式中的多個正則表達式?
- 10. MySQL /正則表達式:部分正則表達式匹配
- 11. Javascript正則表達式 - 正則表達式拆分字符串
- 12. 正則表達式(正則表達式)
- 13. 正則表達式(正則表達式)
- 14. 正則表達式(正則表達式)
- 15. 正則表達式拆分
- 16. 分詞正則表達式
- 17. 正則表達式分割
- 18. 拆分正則表達式
- 19. 正則表達式分組
- 20. 正則表達式拆分
- 21. 正則表達式分組
- 22. 正則表達式拆分(...,...)
- 23. 正則表達式 - 分組?
- 24. 分組正則表達式
- 25. 正則表達式細分
- 26. 拆分正則表達式
- 27. Python的正則表達式和分裂
- 28. Perl的分裂和正則表達式
- 29. 用正則表達式分析和絃
- 30. Swift正則表達式和分隔符
爲什麼是正則表達式?爲什麼不把這個數字分開呢?正則表達式不是正確的工具。 –
我討厭像這樣的採訪。正則表達式不應該像這樣使用。我可以在我的散熱器上煮雞蛋,但這樣做會對我的散熱器造成不良影響。 –
*嗅嗅*我聞到家庭作業。在那做壞功課。 – sberry