我正在學習正則表達式和導師給了我這個先進的鍛鍊。這些字符串的最佳正則表達式?
使用
preg_replace
並創建一個正則表達式,該正則表達式可以在下列字符串的開始處刪除所有數字。
01. A little love (2002)
02 - No.1 Star
03 Love Story
這是相當困難的像我這樣的初學者,所以我在這裏要問,我會很感激,如果你們能幫助我與此有關。
我正在學習正則表達式和導師給了我這個先進的鍛鍊。這些字符串的最佳正則表達式?
使用
preg_replace
並創建一個正則表達式,該正則表達式可以在下列字符串的開始處刪除所有數字。
01. A little love (2002)
02 - No.1 Star
03 Love Story
這是相當困難的像我這樣的初學者,所以我在這裏要問,我會很感激,如果你們能幫助我與此有關。
我強烈建議你去Online regex tester and debugger。你將學到很多有關正則表達式的知識,並會開始認爲事情通常並不像表面上那麼難。
在你的情況,讓我們假設每條線位於$線。如果您的數據在文件中,請轉至this question。讓我們還假設你想要的輸出是
A little love (2002)
No .1 Star<br>
Love Story
你coud做,以各種方式。其中一人
$pattern = '/(^\d+\W+)(\w+.*)/';
$result = preg_replace($pattern, '$2', $line);
你可以嘗試一些簡單的\d{2}[.\-\s]+
。
一個例子是:
echo preg_replace('@\d{2}[.\-\s][email protected]', '', $str);
輸出
A little love (2002)
No.1 Star
Love Story
對於最快的結果(見在regex101的步數),使用:
/^[^A-Z]+/m
Pattern Demo Link
^
。輸出:
A little love (2002)
No.1 Star
Love Story
PHP代碼:(Demo)
$input='01. A little love (2002)
02 - No.1 Star
03 Love Story';
echo preg_replace('/^[^A-Z]+/m','',$input);
使用PHP的multiline modifier這一點,這樣你能夠在每行各自獨立的線的開始檢測前置號碼並刪除不需要的字符。
參見:https://regex101.com/r/G3AzSx/1
<?php
$string = '
01. A little love (2002)
02 - No.1 Star
03 Love Story
';
$string = preg_replace('/^[0-9.\s\-]+/m', '', $string);
這就給了你:
A little love (2002)
No.1 Star
Love Story
打破下來你:
/^[0-9.\s\-]+/m
^
0-9
,點.
,空白\s
或破折號\-
其次。
你可以在第一個空格之前刪除所有東西 – nogad
我知道使用'substr'等其他函數比較容易,但是我不能這樣做,因爲這是他的練習。 –
到目前爲止您嘗試過什麼? – Ibrahim