正则表达式user_agent字段

时间:2018-10-03 05:39:51

标签: regex

我正在尝试对这一行user_agent字段进行正则表达式。

  

user_agent =“ Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_6)   AppleWebKit / 437.38(KHTML,例如Gecko)Chrome / 49.0.3477.100   Safari / 437.38“

['3,100', '3,000']

上面的命令返回

  

“ user_agent =“ Mozilla / 5.0”

。但是我需要全文

  

“ Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_6)AppleWebKit / 437.38   (KHTML,例如Gecko)Chrome / 49.0.3477.100 Safari / 437.38“

要匹配。

请帮助修改我使用的正则表达式模式。

1 个答案:

答案 0 :(得分:0)

您面临的问题是2折。

  1. 您的正则表达式*仅获取第一个字母,因为在此之后还有一个空格,并且不会捕获该空格。
  2. 此外,即使您修复了第一部分,awk也会再次仅打印以空格分隔的第一内容。

因此,您需要放开awk的打印,并使用.*代替*并具有积极的前瞻性。

检查以下内容:

cat myfile | grep -oP '(user_agent=\".*\")(?=\saccept)'

在这里, \".*\"正在搜索双引号内的所有内容 (?=\saccept)是肯定的前瞻性陈述,一旦找到a space followed by accept,就会立即停止搜索。