我有这个字符串:
[06/Aug/2016: 11:47:29 +0500] [cameroun.tn][/var/log][2] Warning. Match of "rx \\.(jpg|gif|png|js|css|ttf)$" against "REQUEST_FILENAME" required. [file "/var/log"] [line "29"] [td "90"] [msg "wel done"]
我使用此正则表达式来提取日期:
^\[[^][]*[+][0-9]{4}]
和消息:
\[msg .*\]
如何忽略日期和消息之间的所有单词以仅使用一个匹配来获取它们?
答案 0 :(得分:0)
您想要的模式是:
^\[([^][]*\+\d{4})\].*\[(msg\s*"[^"]*"\s*)\]
它做的是匹配并捕获日期字符串,匹配字符串的其余部分,然后匹配并捕获消息。然后,您可以提取捕获组的内容(我假设您在bash
中从问题标签中执行此操作):
pattern='^\[([^][]*\+\d{4})\].*\[(msg\s*"[^"]*"\s*)\]'
if [[ $string =~ $pattern ]]
then
echo "${BASH_REMATCH[1]} ${BASH_REMATCH[2]}"
fi