陷入正则表达式我不知道是否有可能使用php preg_match_all

时间:2011-04-28 15:49:30

标签: php regex expression pcre preg-match-all

我有一个文件,其中我想要下面的特定数据是样本数据

 moduleHelper.addModule('REC');
  moduleHelper.addModule('TOP');

我想要的是

  

anything.anything( 'X');即

moduleHelper.addModule('');

以上是我想要归还的内容。

我只是不希望'x'部分不包括单引号。

我亲自尝试并写下了一个正则表达式。

  

/(.*)\.(.*)\(\'[^.*]\'\)/mi

根据PCRE手册,它没有给我任何内容[]里面的^做否定?

5 个答案:

答案 0 :(得分:2)

如果你想弄清楚所有反向引用是如何工作的,可以用preg_replace_callback来完成,但我认为这样会更容易:

// the regex
$regex = "/(?P<FIRST>.+)?\.(?P<SECOND>.+)\('(?P<PARAM>.+)?\'\)?/mi";

$subject = <<<EOB
moduleHelper.addModule('REC');
moduleHelper.addModule('TOP');
EOB;

$matches = array();
$numberOfMatches = preg_match_all($regex, $subject, $matches, PREG_SET_ORDER);


$results = array();
foreach($matches as $match)
{
    array_push($results, sprintf("%s.%s('')", $match['FIRST'], $match['SECOND']));
}

print_r($results);

// result:

Array
(
    [0] => moduleHelper.addModule('')
    [1] => moduleHelper.addModule('')
)

答案 1 :(得分:0)

确实做了否定。 [^.*],在这种情况下,意味着“上传 .*的角色。我想你想要下面,但我不能完全说出来

preg_match_all( "/(\w+\.\w+)(?=\([\"']\w+[\"']\);)/i", $string, $matches);

答案 2 :(得分:0)

尝试使用以下

/^([^.]+)\.([^\(]+)/

答案 3 :(得分:0)

如果^是[]中的第一个字符,则它会否定集合中的其他字符。如果[ab]接受a或b,[^ ab]接受任何不是a或b的字符。

我也不确定你想要什么。你声明你不想要'x',但你到底想要什么?

答案 4 :(得分:0)

试试这个:

 /([^.]*)\.([^.]*)\(.*\)/