Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从方括号中提取字符串_Regex_Bash_Sed_Awk - Fatal编程技术网

Regex 从方括号中提取字符串

Regex 从方括号中提取字符串,regex,bash,sed,awk,Regex,Bash,Sed,Awk,我需要从以下示例字符串中获取值myfile.ext:“我的消息[file:myfile.ext]” 我看到了,但如果括号不在字符串中,则无法使字符串返回空字符串 我需要检查字符串是否包含[file:**],并返回变量***,否则***必须为空值。您可以使用grep进行此操作: $ grep -Po '(?<=\[file:)[^]]*(?=])' file myfile.ext 默认为空,否则为myfile.ext 样品 您可以为此使用grep: $ grep -Po '(?<=\

我需要从以下示例字符串中获取值myfile.ext:“我的消息[file:myfile.ext]”

我看到了,但如果括号不在字符串中,则无法使字符串返回空字符串

我需要检查字符串是否包含[file:**],并返回变量***,否则***必须为空值。

您可以使用grep进行此操作:

$ grep -Po '(?<=\[file:)[^]]*(?=])' file
myfile.ext
默认为空,否则为myfile.ext

样品 您可以为此使用grep:

$ grep -Po '(?<=\[file:)[^]]*(?=])' file
myfile.ext
默认为空,否则为myfile.ext

样品
您可以使用以下BASH正则表达式:

[[ "$s" == *[* ]] && [[ "$s" =~ \[[^:]*:([^\]]+)\] ]] && echo "${BASH_REMATCH[1]}"
myfile.ext

您可以使用以下BASH正则表达式:

[[ "$s" == *[* ]] && [[ "$s" =~ \[[^:]*:([^\]]+)\] ]] && echo "${BASH_REMATCH[1]}"
myfile.ext

您可以使用sed的-n标志来禁止打印所有行,然后专门使用regex中的p标志来打印匹配项:

sed -n 's/\[file:\([^\]*\)]/\1/p' file

您可以使用sed的-n标志来禁止打印所有行,然后专门使用regex中的p标志来打印匹配项:

sed -n 's/\[file:\([^\]*\)]/\1/p' file

小题大做:它不向上看[下一步]。您的解决方案将返回myfile.ext以输入我的消息[文件:myfile.ext。为什么我没有想到grep。谢谢!小挑剔:它不会查找下一个]。您的解决方案将返回myfile.ext以输入我的消息[文件:myfile.ext.为什么我没有想到grep.谢谢!