0

有人可以解释以下几行中发生的事情。

JLog::addLogger(array('text_file' => 'log.php'), JLog::INFO);
JLog::add('Test', JLog::INFO, '((?:test<[a-zA-Z][^>]*>\s*){0,7})');


//logger output :: testa-za-zs07
  1. 片中发生了什么((?:test<[a-zA-Z][^>]*>\s*){0,7})
  2. 为什么 joomla 记录器没有按原样提供/记录确切的字符串((?:test<[a-zA-Z][^>]*>\s*){0,7})
  3. 有人可以解释每一块((?:test<[a-zA-Z][^>]*>\s*){0,7})吗?
4

2 回答 2

1

((?:test<[a-zA-Z][^>]*>\s*){0,7})是一个正则表达式。这是对该表达式含义的解释:http ://regex101.com/r/dZ8sA1

如果您阅读该链接后仍不清楚,请询问,我将尝试进一步解释。

于 2012-08-20T09:23:26.043 回答
0

这是一个正则表达式。

((?:test<[a-zA-Z][^>]*>\s*){0,7})

这是一个很大的捕获组。

?:表示该括号的非捕获组。

[a-zA-Z]表示一个字符 az 或 AZ。

[^>]*表示除“>”之外的所有内容为零或多个。

\s*表示零个或多个空格符号(制表符、空格等)。

{0,7}表示从 0 到 7 次重复

所以,基本上整个模式意味着:

查找测试,然后是 < 符号,然后是一个符号 a-zA-Z,然后是除 > 之外的零个或多个符号,然后是 > 符号,然后是可选空格。并从 0 到 7 重复寻找这个。所以它会寻找一个前面有“测试”字样的标签。

这里有一些例子。它只匹配前 7 个测试

于 2012-08-20T10:03:54.747 回答