我有这个字符串:
use A\B\C;
use A\B\C;
var $foo;
/*
* comment
*/
use D\E\F;
Class Foo {
如何替换以use开头的最后一个字符串。在上面的示例中必须是“使用D \ E \ F;”结果。
我找到了许多方法,但没有运气。包括前瞻阴性(?!),但很困惑如何使用它。所以我现在可以得到“use(。*);”但是这被替换了所有匹配的字符串。
感谢。
答案 0 :(得分:1)
您可以将此正则表达式与s
开关(DOTALL)一起用于搜索:
'/use [^\n]*(?!.*?use)/s'
<强>代码:强>
$re = '/use [^\n]*(?!.*?use)/s';
$str = 'use A\B\C;
use A\B\C;
var $foo;
/*
* comment
*/
use D\E\F;
Class Foo {';
preg_match($re, $str, $matches);
s
修饰符使点匹配新行use [^\n]*
匹配文本use
找到untile新行(?!.*?use)
是一个否定前瞻,只有在没有其他use