我想這或多或少是一個由兩部分組成的問題,但這裏首先介紹一些基本知識:我寫了一些PHP來使用preg_match_all來查看由{}結尾的字符串變量。然後它遍歷每個返回的字符串,用MySQL查詢中的數據替換它找到的字符串。PCRE正則表達式語法
第一個問題是這樣的:任何好的網站都可以真正瞭解PCRE表達式的來龍去脈嗎?我在谷歌上搜索了很多,但目前爲止我找到的最好的一個是http://www.regular-expressions.info/。在我看來,那裏的信息沒有很好的組織,因爲當我需要寫一個複雜的正則表達式時,我寧願不要求求助,請給我指點幾個站點(或幾本書)!這將幫助我在將來不必打擾您。
第二個問題是這樣的:我有這樣的正則表達式
"/{.*(_){1}(.*(_){1}[a-z]{1}|.*)}/"
,我需要它趕上如{first_name}, {last_name}, {email}
情況下,等我有三個問題,這個正則表達式。
首先它將「{first_name} {last_name}
」看作一個字符串,當它看作是兩個字符串時。我已經能夠通過檢查空間的存在來解決這個問題,然後在空間上爆炸。凌亂,但它的作品。
第二個問題是它包含作爲捕獲字符串的一部分的標點符號。所以,如果你有「{first_name} {last_name}
」,那麼它返回逗號作爲字符串的一部分。我已經能夠部分解決這個問題,只需使用preg_replace刪除句點,逗號和分號。雖然它適用於這些標點符號,但我的邏輯無法處理感嘆號,問號和其他所有內容。
我對這個正則表達式的第三個問題是它根本沒有看到{email}的實例。
現在,如果可以的話,願意並且有時間給我解決這個問題的方法,謝謝你解決我眼前的問題。然而,即使你可以這樣做,請請提供一個lmgfty,它提供了很好的網站作爲參考和/或一本或兩本書,可以提供這方面的良好教育。由於資金緊張,網站會更可取,但如果一本書是解決方案,我會找到錢(假設我的本地圖書館系統無法購買上述量)。
我真的很喜歡[Mastering Regular Expressions](http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124)一書。這本書裏有更多的東西比你可能使用的還要多。非常徹底。 –
@JonahBishop:這是一本很好的書,但不是很容易理解;) – 0xC0000022L
@ClementSmith:你說它應該看作是兩個,但是你的正則表達式是貪婪的。在正確的地方添加幾個'?':) – 0xC0000022L