2017-01-25 61 views
-1

我有一個文件夾包含許多PHP文件,我需要遞歸搜索不以abc開頭的函數定義。所以我需要得到function something() {的所有匹配,其中abc不是something的前綴。什麼是我可以用grep來實現這個的正則表達式?正則表達式 - 查找所有不以某個前綴開頭的函數名稱

+1

對於一般的正則表達式這看起來像這樣(負向前視):'function(?!abc)[^ \ {] + \'{' –

+0

@Micha elRitter它不工作! :( – samurdhilbk

+1

哇...這是非常具有描述性的......「它不工作」...更多的細節?它與許多或幾個功能頭匹配嗎?...? –

回答

2

只需使用正則表達式:

(?:\r?\n|^)\s*?function\s(?!abc).*?\{ 

這裏是JavaScript的一個例子(示範文本是HTML):

var text = document.getElementById('main').innerHTML; 
 
var regex = /(?:\r?\n|^)\s*?(function\s(?!abc).*?\{)/g; 
 
var match = regex.exec(text) 
 

 
while(match !== null) { 
 
    console.log(match[1]); 
 
    match = regex.exec(text); 
 
}
<div id="main" style="white-space:pre;"> 
 
function abc123 { 
 
    function abc123 { 
 
function something { 
 
function abcsomething { 
 
if { 
 
function 123 { 
 
no-match 
 
</div>

+0

你的正則表達式會匹配非函數行,對不對? –

+0

你是對的,沒有想到這一點。我修好了 –

+0

感謝@ ssc-hrep3。我用JS自己試了一下,它可以工作。但是當我使用grep時,它不會給我任何匹配。 grep使用不同的正則表達式格式嗎? – samurdhilbk

相關問題