我有一个文件,其中我想要下面的特定数据是样本数据
moduleHelper.addModule('REC');
moduleHelper.addModule('TOP');
我想要的是
anything.anything( 'X');即
moduleHelper.addModule('');
以上是我想要归还的内容。
我只是不希望'x'部分不包括单引号。
我亲自尝试并写下了一个正则表达式。
/(.*)\.(.*)\(\'[^.*]\'\)/mi
根据PCRE手册,它没有给我任何内容[]里面的^做否定?
答案 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)
试试这个:
/([^.]*)\.([^.]*)\(.*\)/