如何使用Java正则表达式提取如下数据?
How to use Java Regular Expressions to extract the following data?
如何使用正则表达式从下面给出的整个句子中获取第一个长数:
396124450036269056,"@Anyi1987 asi fue,bano total para mi.,:D",MiriamBustam
我想要的结果是:396124450036269056。
那么如何使用正则表达式表示整个句子中的数字呢?
我正在使用使用 Java 正则表达式的 Apache Pig 脚本语言。
所以在太空猪中:
REGEX_EXTRACT_ALL:
句法:
REGEX_EXTRACT_ALL(字符串,正则表达式)
.使用REGEX_EXTRACT_ALL函数进行正则表达式匹配,并提取所有匹配的组。
This example will return the tuple (192.168.1.5,8020).
REGEX_EXTRACT_ALL('192.168.1.5:8020', '(.*)\:(.*)');
REGEX_EXTRACT:
语法:
REGEX_EXTRACT(字符串、正则表达式、索引)。
使用REGEX_EXTRACT函数进行正则表达式匹配,提取index参数定义的匹配组(其中index为从1开始的参数)
This example will return the string '192.168.1.5'.
REGEX_EXTRACT('192.168.1.5:8020', '(.*):(.*)', 1);
\d+
匹配所有数字字符。
因此在这种情况下它匹配 396124450036269056
。
这里不需要正则表达式。您可以使用 substring()
.
s.substring(0, s.indexOf(","))
如果您的字符串总是以数字开头,只需使用 (\d+)
(see this at regex101).
这会将某些内容开头的所有数字提取到匹配组中。所以,如果我理解你的例子,
REGEX_EXTRACT(you, '(\d+).*', 1);
会成功的。如果此函数必须匹配整个文本以提取某些内容,您只需附加 .*
,否则您可以省略它。
您可以使用:
\d*
它将匹配 396124450036269056
Explanation:
\d* match a digit [0-9]
Quantifier: * Between zero and unlimited times
我认为不存在匹配文本中最长数字的正则表达式。
像 \d+ 或 \d* 这样的表达式将只匹配第一个数字,无论有多少位数字。所以如果你有“55 msadmmsada 8882138213821321382183”这些表达式将只匹配 55。
如何使用正则表达式从下面给出的整个句子中获取第一个长数:
396124450036269056,"@Anyi1987 asi fue,bano total para mi.,:D",MiriamBustam
我想要的结果是:396124450036269056。 那么如何使用正则表达式表示整个句子中的数字呢? 我正在使用使用 Java 正则表达式的 Apache Pig 脚本语言。 所以在太空猪中:
REGEX_EXTRACT_ALL: 句法: REGEX_EXTRACT_ALL(字符串,正则表达式) .使用REGEX_EXTRACT_ALL函数进行正则表达式匹配,并提取所有匹配的组。
This example will return the tuple (192.168.1.5,8020).
REGEX_EXTRACT_ALL('192.168.1.5:8020', '(.*)\:(.*)');
REGEX_EXTRACT:
语法: REGEX_EXTRACT(字符串、正则表达式、索引)。 使用REGEX_EXTRACT函数进行正则表达式匹配,提取index参数定义的匹配组(其中index为从1开始的参数)
This example will return the string '192.168.1.5'.
REGEX_EXTRACT('192.168.1.5:8020', '(.*):(.*)', 1);
\d+
匹配所有数字字符。
因此在这种情况下它匹配 396124450036269056
。
这里不需要正则表达式。您可以使用 substring()
.
s.substring(0, s.indexOf(","))
如果您的字符串总是以数字开头,只需使用 (\d+)
(see this at regex101).
这会将某些内容开头的所有数字提取到匹配组中。所以,如果我理解你的例子,
REGEX_EXTRACT(you, '(\d+).*', 1);
会成功的。如果此函数必须匹配整个文本以提取某些内容,您只需附加 .*
,否则您可以省略它。
您可以使用:
\d*
它将匹配 396124450036269056
Explanation:
\d* match a digit [0-9]
Quantifier: * Between zero and unlimited times
我认为不存在匹配文本中最长数字的正则表达式。 像 \d+ 或 \d* 这样的表达式将只匹配第一个数字,无论有多少位数字。所以如果你有“55 msadmmsada 8882138213821321382183”这些表达式将只匹配 55。