java extrack只需要数字
我有一个示例字符串: 注意事项:java extrack只需要数字,java,numbers,format,extract,Java,Numbers,Format,Extract,我有一个示例字符串: 注意事项: g可以是结尾有点,也可以是结尾没有点 2014 g.这是一年,可能是20xx g.或19xx g格式。只有 需要: 但是我只需要提取物4135克和632.35克和7,3克 如果我们发现20xx(结尾处有或没有g.)或19xx(结尾处有或没有g.),这就是igore!(不要抽!) 请帮助我获取正则表达式字符串(用于java)此正则表达式可以为您实现: \b(?!19|20)(\d+(?:\.\d+)?)\s+g\.?\b 例如,在java正则表达式中: priv
请帮助我获取正则表达式字符串(用于java)此正则表达式可以为您实现:
\b(?!19|20)(\d+(?:\.\d+)?)\s+g\.?\b
例如,在java正则表达式中:
private static final Pattern PATTERN
= Pattern.compile("\\b(?!19|20)(\\d+(?:\\.\\d+)?)\\s+g\\.?\\b");
根据您的输入创建一个匹配器
,循环使用.find()
并为每个匹配提取.group(1)
:
final Matcher m = PATTERN.matcher(input);
while (m.find())
System.out.println(m.group(1));
正则表达式的分解:
\b # Find a position where we have a word limit, then
(?!19|20) # find a position where we don't have "19" or "20" following, then
( # begin capturing group
\d+ # one or more digits, followed by
(?: # begin non capturing group
\.\d+ # one dot, followed by one or more digits
)? # end none capturing group, zero or one time,
) # end capturing group, followed by
\s+ # one or more spaces, followed by
g\.? # "g", then a literal dot, zero or one time, followed by
\b # a word anchor again
如果你有2014年的g呢。什么?如果2014年g.-今年是我们需要忽略的一年。我需要伊戈尔1900-1999和2000-2099-这对我来说都是一年
\b # Find a position where we have a word limit, then
(?!19|20) # find a position where we don't have "19" or "20" following, then
( # begin capturing group
\d+ # one or more digits, followed by
(?: # begin non capturing group
\.\d+ # one dot, followed by one or more digits
)? # end none capturing group, zero or one time,
) # end capturing group, followed by
\s+ # one or more spaces, followed by
g\.? # "g", then a literal dot, zero or one time, followed by
\b # a word anchor again