Regex 从方括号中提取字符串
我需要从以下示例字符串中获取值myfile.ext:“我的消息[file:myfile.ext]” 我看到了,但如果括号不在字符串中,则无法使字符串返回空字符串 我需要检查字符串是否包含[file:**],并返回变量***,否则***必须为空值。您可以使用grep进行此操作: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 '(?<=\
$ 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.谢谢!