我正在使用 PIG 生成最近访问过的 URL 列表。在每个 URL 中,都有一串数字代表访问的产品页面。我正在尝试使用一个regex_extract_all()
函数来仅提取长度为 6-8 的数字字符串。数字串可以直接在后面找到jobs2/view/
,通常以 . 结尾,+&cd
但有时也可能以 . 结尾)
。
以下是一些示例 URL:
( http://a.com/search?q=cache:QD7vZRHkPQoJ:ca.xyz.com/jobs2/view/17069404+&cd=1&hl=en&ct=clnk&gl=ca ) ( http://a.com/search? q=cache:G9323j2oNbAJ:ca.xyz.com/jobs2/view/5977065+&cd=1&hl=en&ct=clnk&gl=ca ) ( http://a.com/search?q=cache:aNspmG11qAJ:hk.xyz.com /jobs2/view/16988928+&cd=2&hl=zh-TW&ct=clnk&gl=hk ) ( http://a.com/search?q=cache:aNspmG11AJ:hk.xyz.com/jobs2/view/16988928+&cd= 2&hl=zh-TW&ct=clnk&gl=hk ) ( http://a.com/search?q=cache:aNspmG11qAJ:hk.xyz.com/jobs2/view/16988928+&cd=2&hl=zh-TW&ct=cl k&gl=香港)
这是我正在使用的当前正则表达式:
J = FOREACH jpage GENERATE FLATTEN(REGEX_EXTRACT_ALL(TEXTCOLUMN, '\/view\/(\d+)\+\&')) as (output:chararray)
我也尝试过其他形式,例如:
'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
, 'view.([0-9]+)'
, 'view\/([\d]+)\+'
,
'[0-9][0-9][0-9]+'
, 和
'[0-9][0-9][0-9]*'
; 这些都不起作用。
任何人都可以在这里提供帮助或有其他方法吗?
非常感谢,MM