我想提取所有公司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);
这个正则表达式的问题在于它将提取任意四位数。
答案 0 :(得分:4)
您可以使用
“COMPANY_ID \\\\\”:(\\ d {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));
}