有人會幫我用正則表達式來幫助我可靠地識別和刪除字符串開頭的任何數字,然後是一個點嗎?這樣從字符串中刪除數字前綴 - PHP正則表達式
1. Introduction
成爲
Introduction
和
1290394958595. Appendix A
串後成爲
Appendix A
有人會幫我用正則表達式來幫助我可靠地識別和刪除字符串開頭的任何數字,然後是一個點嗎?這樣從字符串中刪除數字前綴 - PHP正則表達式
1. Introduction
成爲
Introduction
和
1290394958595. Appendix A
串後成爲
Appendix A
嘗試:
preg_replace('/^[0-9]+\. +/', '', $string);
其中給出:
php > print_r(preg_replace('/^[0-9]+\. +/', '', '1231241. dfg'));
dfg
東西
點後210$string = "1290394958595. Appendix A";
$first_space_position = strpos(" ", $string);
$stuff_after_space = substr($string, $first_space_position);
東西
$string = "1290394958595. Appendix A";
$first_dot_position = strpos(".", $string);
$stuff_after_dot = substr($string, $first_dot_position);
忘記最後的括號,所以我把它們關閉了。 – 2010-03-07 22:51:40
歡呼聲,但這些都會吃掉一切(例如'A.An附錄A'),而不僅僅是數值。 – 2010-03-07 22:52:40
在這裏你去:
/[0-9]+\./
順便說一句,我肯定會用正則表達式這裏,因爲他們都非常可靠,重量輕。
乾杯
但3124.第3章可能已損壞.. – 2010-03-07 22:55:01
其實,任何像這樣的句子都會被損壞! – Romain 2010-03-07 22:59:02
損壞?你什麼意思?它不會 – 2010-03-07 23:06:18
瞧:
^[0-9]+\.
print preg_replace('%^(\d+\.)%', '', '1290394958595. Appendix A');
搜索正則表達式的字符串並用其他內容替換該字符串的PHP函數是preg_replace
。在這種情況下你想要的東西,如:
$mytitle = preg_replace('/^[0-9]+\. */', '', $myline);
它應該是'preg_replace('/^[0-9] + \。* /','',$ myline)'。 – 2010-03-07 22:58:58
\ *臉紅* *謝謝 - 現在修復了。 :-) – Tim 2010-03-07 23:09:45
好吧,這不符合識別並刪除任何數字,後面跟着一個點,但它會返回所需的字符串,例如附錄A,所以它可能有資格作爲替代方案。
// remove everything before first space
echo trim(strstr('1290394958595. Appendix A', ' '));
// remove all numbers and dot and space from the left side of string
echo ltrim('1290394958595. Appendix A', '. ');
只是無視它,它不是一個選項。
我知道這個問題是封閉的,只是我的兩分錢:
preg_replace("/^[0-9\\.\\s]+/", "", "1234. Appendix A");
將工作最好的,在我看來,主要是因爲它也將處理的情況下,如
1.2 This is a level-two heading
@Felix的歡呼,這是非常好的,我沒有通過自己的情況。 +1。 – 2010-03-07 23:47:53
如果你認爲這個答案比現在接受的答案好,你可以切換它。我並沒有試圖竊取任何人的雷霆,我只是想着有同樣問題的人在這個頁面上結束並且沒有看到合適的答案。 – Felix 2010-03-08 10:43:54
$str="1290394958595. Appendix A";
$s = explode(" ",$str,2);
if($s[0] + 0 == $s[0]){
print $s[1];
}
請注意'.'表示一個任意字符,而不是句點字符。 – Gumbo 2010-03-07 23:05:48
這個問題有兩個錯誤,在@Romain的答案中不是問題:'[0-9] *'將匹配零數字,這很糟糕 - 使用'+'而不是'*',而' .'是一個特殊的字符,意思是「匹配任何字符」,並且應該用一個反斜槓('\')加以前綴。 – 2010-03-07 23:06:26
這有什麼不同? /[0-9]+\./g 除了貪婪和冗長嗎? – 2010-03-07 23:07:16