【问题标题】:Regular expression for getting number between two words [closed]用于获取两个单词之间数字的正则表达式[关闭]
【发布时间】:2013-12-12 18:01:09
【问题描述】:

我正在尝试从下面的字符串中提取一个数字/单词 84900,关键字是 HEIGHT 和 CM。

String s ="I am with weight 600 KG AND HEIGHT 84900 CM";

另外:如果我想从一个字符串中提取多个单词,该怎么做。比如说 eg2 :ITEM ORDERED AT 2030 IS 5620 POUNDS,我需要提取 ORDERED , 2030,5620

请给我一个java正则表达式的解决方案。 谢谢

【问题讨论】:

  • 已经有很多答案了,但我认为如果您想要一个对您有用的数据示例,您需要提供一些数据示例。仅凭一个例子是不可能做出真正有用的模式的。
  • M21B8 的答案目前被选为正确答案。这是不正确的并且不起作用。为了不让以后可能偶然发现这个问题的人感到困惑,应该取消选择它作为正确答案。

标签: java regex string between


【解决方案1】:

要了解如何执行此操作,您应该真正阅读Java API 中的正则表达式文档 - 特别是在“特殊构造(命名捕获和非捕获)”部分。这里的任何示例都将非常特定于您指定的用例,但通常不适用。所以这个问题对于可能偶然发现它的其他人没有用。但这里有一个 SSCCE,可以为您提供此特定用例的答案。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * http://stackoverflow.com/questions/20550821/regular-expression-for-getting-number-between-two-words
 */
public class Main {
    public static void main(String[] args) {
        String testString = "I am with weight 600 KG AND HEIGHT 84900 CM";
        Pattern pattern = Pattern.compile("(?<=HEIGHT)\\s*([0-9]+)\\s*(?=CM)");
        Matcher matcher = pattern.matcher(testString);
        while(matcher.find()){
            System.out.println("Height: '" + matcher.group(1) + "'");
        }
    }
}

【讨论】:

  • 如果我想从一个字符串中提取多个单词该怎么做。例如:ITEM ORDERED AT 2030 IS 5620 POUNDS,我需要提取 ORDERED , 2030,5620
  • 我是否使用了多个模式和匹配器? :(
【解决方案2】:

HEIGHT\s([0-9]*)\sCM

会这样做 - 但它非常具体

编辑。 没看到是java 使用 + 代替 *

【讨论】:

    【解决方案3】:

    您可以使用[0-9]+ 来查找一个或多个号码。

        String  k ="I am with weight 600 KG AND HEIGHT 84900 CM";
        Pattern p = Pattern.compile("[0-9]+");
        Matcher m = p.matcher(k);
        while(m.find()){
            System.out.println(m.group());
        }
    

    输出

    600
    84900

    编辑

    为此,您需要将正则表达式更改为(?&lt;=HEIGHT )[0-9]+(?= CM)

    【讨论】:

    • 我只需要取身高和CM之间的84900
    • 你用什么工具来制作这张图片?
    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多