gpt4 book ai didi

java正则表达式提取带有边界和可选空格的数字

转载 作者:行者123 更新时间:2023-12-01 14:17:33 26 4
gpt4 key购买 nike

我正在尝试提取 12 和 15。

AB CD 12 ABC/15 DEF
.*\bAB CD\b\s?(\d+)\s?\bABC\b[/](\d+)\s?\bDEF\b

它不起作用,因为我不确定如何匹配确切的单词。我正在尝试使用边界来匹配确切的单词,但这似乎造成了问题。

我试过了

.*\\bAB CD\\b\\s?(\\d+)\\s?\\bABC\\b[/](\\d+)\\s?\\bDEF\\b
.*\\bAB CD\\b\\s*(\\d+)\\s*\\bABC\\b[/](\\d+)\\s*\\bDEF\\b
.*\\bAB CD\\b[\\s]?(\\d+)[\\s]?\\bABC\\b[/](\\d+)[\\s]?\\bDEF\\b
.*\\bAB CD\\b[\\s]*(\\d+)[\\s]*\\bABC\\b[/](\\d+)[\\s]*\\bDEF\\b

谢谢。

最佳答案

除了表达式有点多余之外,您一定做错了什么,因为您的第一个表达式有效:

import java.util.*;
import java.util.regex.*;
import java.lang.*;
 
class Main {
    public static void main (String[] args) throws java.lang.Exception {
       
        String currentLine = "AB CD 12 ABC/15 DEF";
        System.out.println("Current Line: "+ currentLine);
        Pattern p = Pattern.compile(".*\\bAB CD\\b\\s?(\\d+)\\s?\\bABC\\b[/](\\d+)\\s?\\bDEF\\b");
        Matcher m = p.matcher(currentLine);
        while (m.find()) {
            System.out.println("Matched: "+m.group(1));
            System.out.println("Matched: "+m.group(2));
        }
       
    }
}

还有一个演示链接来证明:http://ideone.com/0tXFNu

输出:

Current Line: AB CD 12 ABC/15 DEF
Matched: 12
Matched: 15

因此,请确保使用 m.group(NUMBER) 来访问每个匹配的值。

关于java正则表达式提取带有边界和可选空格的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17984954/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com