1
如果它是一個字符串,我當前的正則表達式應該得到特定PHP函數的返回值。非貪婪正則表達式不會終止
我的第一個正則表達式工作,但我知道它不匹配所有情況,所以我想擴大它。
這是第一個正則表達式:
"public function getVersion\\(\\)\\s*?{\\s*.*return\\s*'(.+)';"
這適用於:
public function getVersion() {
return '1.0.0';
}
但不適合例,其中有函數名和回報之間的線路:
public function getVersion() {
# SomeComment
some_function()
return '1.0.0';
}
以下是大修版本:
"public function getVersion\\(\\)\\s*?{(\\s|.)*?return\\s*'(.+)';"
我使用(\ s |。)*將其更改爲匹配返回前的任意數量的字符或換行符?
雖然實現它,但我發現搜索不會終止。我不確定爲什麼會這樣。即使沒有找到結果,它是否應該在到達搜索文本結尾後終止?任何人都可以幫助我嗎?
不要使用'(\ s |。)',只需使用're.S',以便一個點可以匹配一個換行符。但我認爲這個正則表達式不是解析代碼的正確方法。 –
@stribizhev我想解析沒有正則表達式的代碼。還有什麼替代方案?我還沒有找到一個python庫來解析PHP代碼,而自己寫一個會花費很多時間。 –
我不是代碼解析專家,我可以在網上找到[phply](https://github.com/ramen/phply)。 –