使用正则表达式将数字转换为字符串

时间:2017-01-31 14:52:42

标签: java regex

我必须在字符串中提取两个数字,这总是这样:

file_Sig201701311539043872_1736587_614007_marketing.000

我需要保存不同的值:

  • 1736587

  • 614007

我怎么能这样做?

我尝试使用:\_(.*?)\_但无法正常工作。

3 个答案:

答案 0 :(得分:1)

尝试以下pattern matcher

  final Pattern NUMBER_MATCHER = Pattern.compile("_(\\d+)_(\\d+)");
  Matcher matcher = NUMBER_MATCHER.matcher(/* your file name */);
  if (matcher.find()) {
     System.out.println("matcher.group(1) = " + matcher.group(1));
     System.out.println("matcher.group(2) = " + matcher.group(2));
  }

打印:

matcher.group(1) = 1736587
matcher.group(2) = 614007

现在,正则表达式适用于下划线,后跟任意数字后跟下划线,然后是任意数字的数字。

答案 1 :(得分:1)

您可以利用外观:

(?<=_)(\\d+)(?=_)

捕获的组将包含所需的数字。

  • 零宽度负面反馈,(?<=_)确保匹配前面有_

  • 零宽度负面反馈,(?=_)确保匹配后跟_

  • (\d+)匹配一个或多个数字并放入捕获的组

答案 2 :(得分:1)

试试这个。 示例代码

final Pattern NUMBER_MATCHER = Pattern.compile("_(\\d*)_(\\d*)");
        Matcher matcher =    NUMBER_MATCHER.matcher("file_Sig201701311539043872_1736587_614007_marketing.000");
        if (matcher.find()) {
             System.out.println(matcher.group(1));
           System.out.println(matcher.group(2));
        }