我有以下规则。
我想在脚本中实现这个功能,所以我使用grep这样的方法。
echo "\$this->table('test')" | grep -Po "qr/\$this->table\(\'(test)\'\);/"
输出应该是 "test"
它没有工作,不知道为什么。
grep -Po "qr
echo "\$this->table('test');" | grep -oP "\\\$this->table\\('\\K[^']+(?='\\);)"
或者,如果你把一个文件路径输入到 grep
:
grep -oP "\\\$this->table\\('\\K[^']+(?='\\);)" file
匹配 $
在一个双引号的字符串中,你需要用反斜杠转义,在一个双引号的字符串中,你需要转义为 $
本身用一个反斜线字符来停止变量的扩展,然后你需要再加两个反斜线来对字面意义的 $
字符,因此是 "\\\$"
的模式中。
要匹配两个单引号之间的任何文本,您可以使用 [^']+
- 1个或更多的字符,除了 '
.
见 搜索引擎演示
图案细节
\$this->table\('
- $this->table('
绳子\K
- 匹配重置操作符,从整个匹配缓冲区中丢弃匹配到目前为止的文本。[^']+
- 以外的一个或多个字符 '
(?='\);)
- 积极的展望,需要 ');
字符串紧靠当前位置的右边。有多个问题。
grep -oP "this->table\('\K\w+(?='\);)"