使用正则表达式提取Java中的值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (94)

我有几个大致的字符串:

[some text] [some number] [some more text]

我想把文本提取出来某些数使用JavaRegex类。

提问于
用户回答回答于

完整的例子:

private static final Pattern p = Pattern.compile("^([a-zA-Z]+)([0-9]+)(.*)");
public static void main(String[] args) {
    // create matcher for pattern p and given string
    Matcher m = p.matcher("Testing123Testing");

    // if an occurrence if a pattern was found in a given string...
    if (m.find()) {
        // ...then you can use group() methods.
        System.out.println(m.group(0)); // whole matched expression
        System.out.println(m.group(1)); // first expression from round brackets (Testing)
        System.out.println(m.group(2)); // second one (123)
        System.out.println(m.group(3)); // third one (Testing)
    }
}

由于正在查找第一个数字,所以可以使用以下regexp:

^\D+(\d+).*

m.group(1)会把第一个号码还给你。请注意,有符号数字可以包含减号:

^\D+(-?\d+).*
用户回答回答于

Allain基本上有Java代码,所以可以使用它。

"(\\d+)"

如果期望它被空格所抵消,那么它将使指定更加清晰。

"\\s+(\\d+)\\s+"

如需要这三个部分,那么可以这样做:

"(\\D+)(\\d+)(.*)"

扫码关注云+社区

领取腾讯云代金券