簡體   English   中英

如何從 Java 中的正則表達式中獲取部分字符串

[英]How to get part of string from regex in Java

例如,我有收入范圍的字符串:

5 000-10 000 USD

我想從該字符串中提取最小值和最大值。 我准備了正則表達式,例如第一個值:

[0-9| ]*-

現在我不知道如何獲得那部分字符串。 我嘗試使用模式和匹配器,例如:

 Pattern pattern = Pattern.compile("\\([A-Z|a-z]+");
            Matcher matcher = pattern.matcher(s);
            String employmentType = matcher.group(0);

但我得到 null

替代正則表達式:

"(\\d[\\s\\d]*?)-(\\d[\\s\\d]*?)\\sUSD"

上下文中的正則表達式:

public static void main(String[] args) {
    String input = "5 000-10 000 USD";

    Matcher matcher = Pattern.compile("(\\d[\\s\\d]*?)-(\\d[\\s\\d]*?)\\sUSD").matcher(input);
    if(matcher.find()) {
        String minValue = matcher.group(1);
        String maxValue = matcher.group(2);
        System.out.printf("Min: %s, max: %s%n", minValue, maxValue);
    }
}

Output:

Min: 5 000, max: 10 000

其他選擇,Alt。 2:

"\\d[\\s\\d]*?(?=-|\\sUSD)"

替代品。 2 上下文中的正則表達式:

public static void main(String[] args) {
    String input = "5 000-10 000 USD";

    Matcher matcher = Pattern.compile("\\d[\\s\\d]*?(?=-|\\sUSD)").matcher(input);
    List<String> minAndMaxValueList = new ArrayList<>(2) ;
    while (matcher.find()) {
        minAndMaxValueList.add(matcher.group(0));
    }

    System.out.printf("Min value: %s. Max value: %s%n", minAndMaxValueList.get(0), minAndMaxValueList.get(1));
}

替代品。 2 output:

Min value: 5 000. Max value: 10 000

如果你想使用空格來分割字符串值,你可以試試這個

Pattern p = Pattern.compile("[\\s]+");
String[] result = p.split(text);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM