用于Hive RegexSerDe中访问日志的正则表达式

时间:2013-05-16 13:12:46

标签: regex hive

我是开发正则表达式的新手。任何人都可以帮助我为以下两个字符串构建一个公共正则表达式。

  1. 偏移量= 0 &安培;的 fileGuid = 1014fc48-6eb3-4fff-8242-96f5a496b0ee
  2. 文件=阿诺德+ P + Gleit +合同+ Information.pdf&安培; PARAM =的CommandType = 1.1.2.1〜专案编号= 13979〜FolderID = 1344972〜用户ID = 13395&安培;的 fileGuid = 51c01e15-ac3c-4d2d-bdc9- 4e63251a0364 &安培;位置=的CommandType = 1.1.2.1〜专案编号= 13979〜FolderID = 1344972〜用户ID = 13395&安培;大小= 28357151&安培;标题=安培; DESC =&安培; searchtags =安培; OnDuplicateAction = 2及的偏移量= 1703936 &安培;第一=真&安培;最后=假
  3. 我的目的是获取“偏移”和“ fileGuid ”的值,并将数据加载到Hive表中。 我尝试使用正则表达式 -

    "input.regex" = "offset=([0-9]+).*\\&fileGuid=([a-zA-Z0-9]+\\-[a-zA-Z0-9]+\\-[a-zA-Z0-9]+\\-[a-zA-Z0-9]+\\-[a-zA-Z0-9]+)"
    

    这适用于第一个字符串,但第二个字符串将失败。

    先谢谢。

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:/offset=([^&$]+)|fileGuid=([^&$]+)/

基本上它匹配offset=<string to next & or end of line>fileGuid=<string to next & or end of line>

示例:http://regexr.com?34t57

将offset / fileGuid字符串添加到匹配项中也可能很方便,因此更容易看出哪些字符串使其成为(offset)=([^&$]+)|(fileGuid)=([^&$]+)