如何使用正则表达式从下面给出的整个句子中获得第一个长数:
396124450036269056,"@Anyi1987 asi fue,bano total para mi.,:D",MiriamBustam
我要的结果是:396124450036269056。那么我如何用正则表达式来表示整个句子中的数字呢?我使用的是apachepig脚本语言,它使用java正则表达式。所以在快速Pig:
regex\u extract\u all:语法:regex\u extract\u all(string,regex)。使用regex\u extract\u all函数执行正则表达式匹配并提取所有匹配的组。
This example will return the tuple (192.168.1.5,8020).
REGEX_EXTRACT_ALL('192.168.1.5:8020', '(.*)\:(.*)');
正则表达式提取:
语法:regex\u extract(string,regex,index)。使用regex\u extract函数执行正则表达式匹配,并提取由index参数(其中index是基于1的参数)定义的匹配组
This example will return the string '192.168.1.5'.
REGEX_EXTRACT('192.168.1.5:8020', '(.*):(.*)', 1);
4条答案
按热度按时间eh57zj3b1#
我认为不存在一个正则表达式来匹配文本中最长的数字。像\d+或\d*这样的表达式将只匹配第一个数字,而不管有多少个数字。因此,如果您有“55 msadmmsada 88821821338213821321382183”,那么这些表达式将只匹配55。
dhxwm5r42#
\d+
匹配所有数字字符。所以是吻合的
396124450036269056
在这种情况下。这里不需要正则表达式。你需要一个
substring()
.dgtucam13#
如果字符串总是以数字开头,只需使用
(\d+)
(参见regex101)。这将把某物开头的所有数字提取到一个匹配的组中。如果我能正确理解你的例子,
会成功的。您只需附加
.*
如果此函数必须匹配整个文本才能提取某些内容,否则可以忽略它。bxjv4tth4#
您可以使用:
它将匹配396124450036269056
说明:
\d*匹配数字[0-9]
量词:*介于零次和无限次之间