2016-01-14 44 views
0

我有一个正则表达式:如何将PCRE正则表达式转换为PHP?

/constructor.*?\nbegin\n(^(?:(?!inherited).)*$\n)+?end/igm; 

(它搜索的Delphi构造不继承关键字)。当我在这里使用它:http://www.regextester.com/这是工作相当不错

例如,您可以测试它串

constructor TAPISession.Create; 
begin 

    LastActivity:=Now; 
    CS:= TCriticalSection.Create; 
    APIObj:= TAdvancedServerObject.Create; 
    CachedDomainsList:=TCachedDomainsList.Create; 
    CachedAccountsList:= TCachedAccountsList.Create; 
end; 

但是,如果我在PHP中使用它(preg_match_all)它不工作

preg_match_all('/constructor.*?\nbegin\n(^(?:(?!inherited).)*$\n)+?end;/im',$string,$matches); 

任何帮助,将不胜感激

+2

你确定你在那里只有'\ n'换行符?也许它是'\ r \ n'而不是? –

+0

男人,我很愚蠢:D非常感谢,第二小时救了我:D –

+0

你是在捕获组1之后?通过'$ matches [1]'来访问它。 –

回答

0

谢谢Marc B,所以答案很简单,只是检查还回车

preg_match_all('/constructor.*?\r?\nbegin\r?\n(^(?:(?!inherited).)*$\r?\n)+?end;/im',$string,$matches); 
相关问题