2013-05-16 37 views
2

我在開發正則表達式方面很新。任何人都可以幫助我爲以下兩個字符串構建一個通用正則表達式。正則表達式訪問登錄Hive RegexSerDe

  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 & title = & desc = & searchtags = & OnDuplicateAction = 2 & 偏移= 1703936 &第一=真&最後=假

我的目的是獲得 「偏移」 的價值和 「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]+)" 

這將在第一串工作,但會失敗的第二個字符串。

在此先感謝。

+2

嘗試[下](http://regex101.com/r/uB9rZ7)或[這](http://regex101.com/r/pW7wH7)如果您正則表達式的味道支持命名組 – HamZa

回答

0

這應該做的伎倆:/offset=([^&$]+)|fileGuid=([^&$]+)/

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

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

它也可能是方便偏移/ fileGuid字符串添加到您的比賽所以它更容易看哪個是哪個,這樣做就像(offset)=([^&$]+)|(fileGuid)=([^&$]+)

+0

達喜, 感謝您的快速回復。我嘗試了**「input.regex」=「/ offset =([^&$] +)| fileGuid =([^&$] +)/」**,但兩行的結果都是NULL。然後我用 **「input.regex」=「offset =([^&$] +)。* fileGuid =([^&$] +)|。* fileGuid =([^&$] +) *偏移=([^&$] +)。*「** 結果是 1014fc48-6eb3-4fff-8242-96f5a496b0ee NULL NULL \t 它處理的第一行完美但錯過了第二行。如果我缺少任何東西,請指導我。 感謝和問候 – buddy86

+0

我不知道發生了什麼問題。我不知道Hive環境。它在我提供的示例中工作。所以正則表達式似乎是正確的.. –