java - 如何在 - 和 ^ 之间或 - 之后获取字符串

标签 java regex

我有以下字符串,我想从中提取 - 和 ^ 之间的字符串。而且我还想要 after - 的字符串,前提是它是给定字符串中的最后一个 -

090186-1052^0901164-1052^090180046165-585^0980046166-24064^090186a980046170-24064^00046168-36495^0901846169-46731^0d019616e-34985^8004616f-13010^186a9846167-778

我已经编写了以下代码,但我得到了除 778 以外的所有值,而 778 是 null

public static void main(String args[]){
        Pattern pattern = Pattern.compile("-(.+?)\\^|-(.+)");
        String str = "090186-1052^0901164-1052^090180046165-585^0980046166-24064^090186a980046170-24064^00046168-36495^0901846169-46731^0d019616e-34985^8004616f-13010^186a9846167-778";
        Matcher matcher = pattern.matcher(str);
          while (matcher.find()) {
                System.out.println(matcher.group(1));
            }
    }

最佳答案

合适的正则表达式是

Pattern pattern = Pattern.compile("-(.+?)(?:\\^|$)");

内容如下:- 后跟任何字符(分组的、不情愿的),后跟(非捕获的)^ 或输入结束符。

这样匹配的号码总是在第一组。

关于java - 如何在 - 和 ^ 之间或 - 之后获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33166197/

相关文章:

java - Java 中的 Mutliround Feistel 网络

python - 如何从文本文件中提取特定部分?

python - 在关键字后搜索嵌入在 {} 中的字符串

c# - 快速正则表达式问题

Java 弃用注释

java - jQuery 无法在 FF 或 IE 中工作,但在 Chrome 中工作正常

java - 在返回 Hibernate 对象的方法上使用 Spring Cacheable 注释

java - 自动完成 JCombobox

javascript - Javascript 中带有条件的特定正则表达式

java - 正则表达式:在任何情况下突出显示 TextView 中的输入