如何在java中使用Regex提取某个单词后面的4位数字?

时间:2015-11-01 22:20:11

标签: java regex

我想提取所有公司ID,这些ID总是 4

这是我的字符串:

String test= "{\"company_id\":2567\"IDNUmber=8847,school:Seen\"company_id\":2576"}";

我想在company_id部分之后只提取4位数。在上面的字符串中,值为 2567 2576 ,而 8847 我想忽略,因为它不会出现在company_id \

这是我到目前为止所做的:

  Pattern pattern = Pattern.compile("(\\b\\d{4}\\b)");
  Matcher matcher = pattern.matcher(test);

这个正则表达式的问题在于它将提取任意四位数。

3 个答案:

答案 0 :(得分:4)

您可以使用

  

“COMPANY_ID \\\\\”:(\\ d {4})“

作为具有以下细分的正则表达式模式:

  • company_id - 字面匹配字符company_id(区分大小写)
  • \\\\ - 匹配字符\字面意思得到\ after company_id后,你需要其中的4个,因为你需要逃避逃脱。第一个逃脱,以逃脱字符串处理\作为特殊字符,第二个转义为正常表达处理\作为特殊字符。
  • \“: - 匹配字符”:字面意思是“被”
  • 转义
  • (\\ d {4}) - 捕获您想要的4位数字

答案 1 :(得分:2)

"(?<=company_id\":)\\d{4}"

将根据您提供的规格和示例提取图案,清除杂乱文本(仅提供ID编号)。

答案 2 :(得分:0)

这应该适用于您的情况,因为ID与“:”结合,而其他ID与“=”结合:

 public static void main(String[] args) 
{
//something to invoke constructor and get strings
int sum1Str= sumAscii(userInput1)
int sum2Str = sumAscii(userInput1,userInput2)
System.out.println("The sum of one string is "+sum1Str);
System.out.println("The sum of two strings is " +sum2Str);
}

:(\\d*)

注意:在“:

之后,第一个将使用任何长度编号

代码

:(\\d{4})

输出

Pattern p = Pattern.compile(":(\\d*)");
Matcher m = p.matcher("{\"company_id\":2567\"IDNUmber=8847,school:Seen\"company_id\":2576\"}");

while (m.find()){
    System.out.println(m.group(1));
}