正则表达式忽略字
问题描述:
我有这个字符串:正则表达式忽略字
[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 .*\]
哪有我忽略日期和消息之间的所有单词以仅使用单个匹配获取它们?
答
你想要的模式是:
^\[([^][]*\+\d{4})\].*\[(msg\s*"[^"]*"\s*)\]
它所要做的就是比赛,并捕获日期字符串,匹配字符串的其余部分,然后匹配并捕获消息。然后,您可以提取捕获组的内容(我假设你在bash
从你的问题标签这样做):
pattern='^\[([^][]*\+\d{4})\].*\[(msg\s*"[^"]*"\s*)\]'
if [[ $string =~ $pattern ]]
then
echo "${BASH_REMATCH[1]} ${BASH_REMATCH[2]}"
fi
+0
的所有行谢谢,请你适应这个正则表达式^ [([^] [] * \ + \ d {4})] * [(msg \ s *“[^”] *“\ s *)]用pyton编译它与regxp python compilateur – user2148747
也许'^ \ [[^] [] * [+] [0 -9] {4}](。*)\ [msg'并抓取组1的内容? –
使用捕获组。 – Fairy
预期产量是多少?你使用的是什么确切的工具? 'grep'?使用'grep',你需要一个像'grep -oP'这样的PCRE正则表达式(?