Java 根据模式提取数据
Java Extract data based on pattern
我正在寻找使用 java 正则表达式的模式提取器。在这方面的任何帮助表示赞赏。让我用一个例子来解释。
对于以下输入:
史蒂夫赚了 9050 美元。史蒂夫的燃料成本是 500 美元史蒂夫的食物成本是 800 杰克赢得了 10000 史蒂夫的毕业分数是 85 80 50 75 60
预期输出如下:
- 史蒂夫赚了 9050
- 史蒂夫燃料成本是 500
- 史蒂夫的伙食费是 800
- 杰克赢了 10000
- 史蒂夫的毕业成绩是 85 80 50 75 60
在上面的字符串中,有几个单词后面跟着数字。数字完成后,我想将模式换行。
空格、句号不是问题。提取更重要。数字之前的字数可能会有所不同。对于某些人来说,会有 2-3 个词。在某些情况下,可能有 10 个字的前面的数字。
有什么建议吗?
匹配句子的模式可以是 [\D\s]+[\d\s$\.]+
,即非数字和空格后跟数字、空格、美元和句点。要在 Java 中提取这些内容,您可以这样做:
import java.util.regex.*;
public class foo {
public static void main(String[] args) {
String s = "Steve earns 9050$. Steve fuel cost is 500$ steve food cost is 800 Jack won 10000 steve marks in grad are 85 80 50 75 60";
Pattern p = Pattern.compile("[\D\s]+[\d\s$\.]+");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group(0));
}
}
}
如果您希望数字后的字符超过美元和句点,请将它们放在第二个 []
组中。如果您不想要其中的美元和句点,请将其删除。不过,在那种情况下,它们将出现在下一个标记中,除非您在正则表达式的开头添加一些内容来阻止匹配。
Pattern p = Pattern.compile("[^\s\.$][\D\s]+[\d\s]+");
想到了。
我正在寻找使用 java 正则表达式的模式提取器。在这方面的任何帮助表示赞赏。让我用一个例子来解释。
对于以下输入: 史蒂夫赚了 9050 美元。史蒂夫的燃料成本是 500 美元史蒂夫的食物成本是 800 杰克赢得了 10000 史蒂夫的毕业分数是 85 80 50 75 60
预期输出如下:
- 史蒂夫赚了 9050
- 史蒂夫燃料成本是 500
- 史蒂夫的伙食费是 800
- 杰克赢了 10000
- 史蒂夫的毕业成绩是 85 80 50 75 60
在上面的字符串中,有几个单词后面跟着数字。数字完成后,我想将模式换行。
空格、句号不是问题。提取更重要。数字之前的字数可能会有所不同。对于某些人来说,会有 2-3 个词。在某些情况下,可能有 10 个字的前面的数字。
有什么建议吗?
匹配句子的模式可以是 [\D\s]+[\d\s$\.]+
,即非数字和空格后跟数字、空格、美元和句点。要在 Java 中提取这些内容,您可以这样做:
import java.util.regex.*;
public class foo {
public static void main(String[] args) {
String s = "Steve earns 9050$. Steve fuel cost is 500$ steve food cost is 800 Jack won 10000 steve marks in grad are 85 80 50 75 60";
Pattern p = Pattern.compile("[\D\s]+[\d\s$\.]+");
Matcher m = p.matcher(s);
while(m.find()) {
System.out.println(m.group(0));
}
}
}
如果您希望数字后的字符超过美元和句点,请将它们放在第二个 []
组中。如果您不想要其中的美元和句点,请将其删除。不过,在那种情况下,它们将出现在下一个标记中,除非您在正则表达式的开头添加一些内容来阻止匹配。
Pattern p = Pattern.compile("[^\s\.$][\D\s]+[\d\s]+");
想到了。