我使用sed来实现这一点,但它与其他正则表达式是一样的。
尝试从WordPress wp-config.php文件中获取DB_NAME,在本例中为test。此外,我无法控制是否使用单引号(')或双引号(“)。空间可能存在…这些是我可以期待的一些例子:
define( 'DB_NAME', 'test' );
define('DB_NAME','test');
define( "DB_NAME", "test" );
下面是我正在使用的:
sed -E -n "s/define\([[:space:]]?.DB_NAME.,[[:space:]]?.(.*).[[:space:]]?\);/\1/p" wp-config.php
这是输出:
test'
test
test"
带的?在最后一个[:space:]之后,只有第二行返回预期的test。其他人都附上了报价。
为什么会这样?* *.不应该捕获引号和[:space:]]吗?**catch a space,if it's there?**catch a space,if it's there?
我知道我可以用途:
['\|\"]
捕捉引号而不是点,但想知道为什么这是...
2条答案
按热度按时间8ftvxx2r1#
(.*)
捕获引号,括号外的.
捕获尾部的白色空格,然后[[:space:]]?
匹配0个字符。试试这样的方法:fslejnso2#
可以使用
awk