Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于模式的Java数据抽取_Java_Regex - Fatal编程技术网

基于模式的Java数据抽取

基于模式的Java数据抽取,java,regex,Java,Regex,我正在寻找一个使用java正则表达式的模式提取器。在此方面的任何帮助都将不胜感激。让我举例说明 用于以下输入: 史蒂夫挣9050美元。史蒂夫的燃料费是500美元史蒂夫的食物费是800杰克赢了10000史蒂夫的成绩是85 80 50 75 60 预期输出如下: 史蒂夫挣9050英镑 史蒂夫:燃料费是500英镑 史蒂夫的食物价格是800美元 杰克赢了10000英镑 史蒂夫的成绩是85 80 50 75 60 在上面的字符串中,有几个单词后跟数字。一旦数字完成,我想把图案分成一条新线 空格、句点都

我正在寻找一个使用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]+");

C++是如何进入图片的(如果没有,为什么要标记它)?问题是基于编程逻辑的。即使使用任何外部库,也可以获得解决方案。如果你认为,我错误地标记了C++,请让我知道,这样我可以编辑相同的。第一个模式是正确的,它完美地工作。感谢您的超快解决方案。