记录器中的Joomla正则表达式


Joomla regex in logger

有人能解释一下下面几行发生了什么吗。

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 logger没有像((?:test<[a-zA-Z][^>]*>'s*){0,7})那样给出/记录确切的字符串
  3. 有人能解释每一个((?:test<[a-zA-Z][^>]*>'s*){0,7})

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

如果在你阅读了该链接后仍然不清楚,请询问,我会尝试进一步解释。

这是一个正则表达式。

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

这是一个庞大的捕捉小组。

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

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

[^>]*表示除">"以外的所有内容为零或更多。

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

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

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

查找测试,然后<符号,然后一个符号a-zA-Z,然后零个或多个符号,除了>,然后是>符号,然后是可选空间。从0到7个重复中寻找这个。因此,它会查找一个前面有"test"单词的标签。

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