在急切的量词之前进行负面回顾
Negative lookbehind before an eager quantifier
我需要重构一些 PHP 注释,我想用 array<int, string>
替换 string[]
。
我已尝试将适当的注释与此 PCRE 正则表达式相匹配:
(?<!$|>)\w+\[\]
但是不行,here's how the regex is matching:
最新的两行不应该匹配。有没有办法为此创建一个有效的正则表达式,或者我应该使用创建自定义脚本来执行此操作?
您可以使用
\b(?<!$|->)\w+\[]
详情
\b
- 单词边界
(?<!$|->)
- 如果 $
或 ->
紧邻当前位置 的左侧,则匹配失败的负后视
\w+
- 1+ 个单词字符。
\[]
- []
子串。
参见PHP demo:
$str = '/** @var string[] */
/** @return string[] */
* @param Company[]|null $companies
$icons[] = static::getIconDetailsFromLink($link);
$this->properties[] = $property;';
if (preg_match_all('/\b(?<!$|->)\w+\[]/', $str, $matches)) {
print_r($matches);
}
我需要重构一些 PHP 注释,我想用 array<int, string>
替换 string[]
。
我已尝试将适当的注释与此 PCRE 正则表达式相匹配:
(?<!$|>)\w+\[\]
但是不行,here's how the regex is matching:
最新的两行不应该匹配。有没有办法为此创建一个有效的正则表达式,或者我应该使用创建自定义脚本来执行此操作?
您可以使用
\b(?<!$|->)\w+\[]
详情
\b
- 单词边界(?<!$|->)
- 如果$
或->
紧邻当前位置 的左侧,则匹配失败的负后视
\w+
- 1+ 个单词字符。\[]
-[]
子串。
参见PHP demo:
$str = '/** @var string[] */
/** @return string[] */
* @param Company[]|null $companies
$icons[] = static::getIconDetailsFromLink($link);
$this->properties[] = $property;';
if (preg_match_all('/\b(?<!$|->)\w+\[]/', $str, $matches)) {
print_r($matches);
}