我有這個PHP正則表達式匹配:PHP不與捕獲組尊重非捕獲組前瞻裏
preg_match_all('/(\d+)(?:\.(?=(\d+)))?/', "43.3", $matches, PREG_SET_ORDER);
它(至少在MI記)表示:
Match one or more numbers as a group, and if there is a '.' after that
group followed by a group of numbers, match those too, but ignore the '.'.
所以,可能的字符串是:
1
23244
24.5
2.454646
但不是:
1.
現在,這個工作完美地在regex101.com
與任何測試字符串我扔在它,但它似乎並沒有與PHP的工作。這是我所得到的,如果我var_dump($matches)
:
array(2) {
[0]=>
array(3) {
[0]=>
string(3) "43."
[1]=>
string(2) "43"
[2]=>
string(1) "3"
}
[1]=>
array(2) {
[0]=>
string(1) "3"
[1]=>
string(1) "3"
}
}
- 爲什麼我的
43
後得到點? - 爲什麼我將所有東西都重複?
- 爲什麼我會在第一組中獲得
3
?
我想'$比賽[0] [0]'總是全場比賽,好像你的整個圖案被包裹在一組括號。我不知道如何關閉它。 – mpen
Regex101會爲你解釋:https://regex101.com/r/fO4dM5/1 –
@JaredFarrish考慮到我提到我已經用regex101測試過了,你的評論並沒有真正的幫助。我在這裏問,因爲顯然,regex101給我的解釋(和結果)並不是PHP返回的那些。 – alexandernst