Java 正则表达式的问题

Java 正则表达式的问题,java,Java,我做了一个应用程序,在这个应用程序中,我可以在匹配器的帮助下通过正则表达式获得字段的值。。。我做了一个方法,在这个方法中,我传递一个字段并得到一个响应。在今天的字符串中,我的响应中出现了一些奇怪的行为,我得到了AgentId=2500120052805950,在matcher之后,我得到了false,因此我必须检查名称包含“AgentId”的字段是否存在,并验证值 所需字段: SecondaryAgentId=falsePrimaryAgentId=false 响应: IsPrimaryAgen

我做了一个应用程序,在这个应用程序中,我可以在匹配器的帮助下通过正则表达式获得字段的值。。。我做了一个方法,在这个方法中,我传递一个字段并得到一个响应。在今天的字符串中,我的响应中出现了一些奇怪的行为,我得到了AgentId=2500120052805950,在matcher之后,我得到了
false
,因此我必须检查名称包含“AgentId”的字段是否存在,并验证值

所需字段:
SecondaryAgentId=false
PrimaryAgentId=false

响应:

IsPrimaryAgentId=true; AgentId=25001220052805950; MerchantID=19; Cashier=michael; IsManualPayment=1; UserID=GraceRose; Password=rose1234; AmountUserEntered=2; AmountApproved=0; AmountDifference=0; Amount=0; CustomerNameAttempts=0; ProductID=Agriculture; InvoiceID=inv7443; SiteUrl=http://www.thcelink.com/index.php/shoping/checkout/step/step-1; ReturnURL=http://220.2.3:2027/Customer/Thanks.aspx; ResponseType=1; PrimaryAgentId=fake; PrimaryCurrencyCode=fake; SecondaryAgentId=fake; SecondaryCurrencyCode=fake; MerchantName=GraceRose; EmailId=rr@myglobal.com; Query1Attempts=0; MerchantTransactionID=543; MerchantTransactionSequenceID=246; txtAmtIsVisible=false; isQuery1Executed=false; isQuery2Executed=false; Voucher=fake; Passcode=fake; Error=fake; QueryType=fake; Payer=fake; CurrencyName=fake; CurrencySymbol=fake; CustomerName=fake; EmailBody=fake; ErrorText=fake; CustomerEmailID=fake; NavigatePageValue=0; IsCustomerInsertSucess=false; IdType=fake; IdNumber=fake; AggregateAttempts=0; Voucher2=fake; PassCode2=fake; Voucher3=fake; PassCode3=fake; TransCode=0; TransactionDate=2012-06-11T12:04:52.921875+05:30; NumberInWords=fake; MerchantCompany=fake; InvoiceNumber=fake; OverPaidAmount=0; InsufficientAmount=0; OverPaymentForEmail=fake; RedirectPage=false; 
private String GetString1(String strManualproResponce2, String paternField) {
        // TODO Auto-generated method stub
        String s = null;
        if(paternField.equalsIgnoreCase("AgentId"))
        {
            Pattern pinPattern2 = Pattern.compile("^"+paternField + "=(.*?);");
            ArrayList<String> pins2 = new ArrayList<String>();
            Matcher m2 = pinPattern2.matcher(strManualproResponce2);
            while (m2.find()) {
                pins2.add(m2.group(1));
                s = m2.group(1);
            }
        }else
        {
        Pattern pinPattern2 = Pattern.compile(paternField + "=(.*?);");
        ArrayList<String> pins2 = new ArrayList<String>();
        Matcher m2 = pinPattern2.matcher(strManualproResponce2);
        while (m2.find()) {
            pins2.add(m2.group(1));
            s = m2.group(1);
        }
        }

        return s;
    }
更新::

IsPrimaryAgentId=true; AgentId=25001220052805950; MerchantID=19; Cashier=michael; IsManualPayment=1; UserID=GraceRose; Password=rose1234; AmountUserEntered=2; AmountApproved=0; AmountDifference=0; Amount=0; CustomerNameAttempts=0; ProductID=Agriculture; InvoiceID=inv7443; SiteUrl=http://www.thcelink.com/index.php/shoping/checkout/step/step-1; ReturnURL=http://220.2.3:2027/Customer/Thanks.aspx; ResponseType=1; PrimaryAgentId=fake; PrimaryCurrencyCode=fake; SecondaryAgentId=fake; SecondaryCurrencyCode=fake; MerchantName=GraceRose; EmailId=rr@myglobal.com; Query1Attempts=0; MerchantTransactionID=543; MerchantTransactionSequenceID=246; txtAmtIsVisible=false; isQuery1Executed=false; isQuery2Executed=false; Voucher=fake; Passcode=fake; Error=fake; QueryType=fake; Payer=fake; CurrencyName=fake; CurrencySymbol=fake; CustomerName=fake; EmailBody=fake; ErrorText=fake; CustomerEmailID=fake; NavigatePageValue=0; IsCustomerInsertSucess=false; IdType=fake; IdNumber=fake; AggregateAttempts=0; Voucher2=fake; PassCode2=fake; Voucher3=fake; PassCode3=fake; TransCode=0; TransactionDate=2012-06-11T12:04:52.921875+05:30; NumberInWords=fake; MerchantCompany=fake; InvoiceNumber=fake; OverPaidAmount=0; InsufficientAmount=0; OverPaymentForEmail=fake; RedirectPage=false; 
private String GetString1(String strManualproResponce2, String paternField) {
        // TODO Auto-generated method stub
        String s = null;
        if(paternField.equalsIgnoreCase("AgentId"))
        {
            Pattern pinPattern2 = Pattern.compile("^"+paternField + "=(.*?);");
            ArrayList<String> pins2 = new ArrayList<String>();
            Matcher m2 = pinPattern2.matcher(strManualproResponce2);
            while (m2.find()) {
                pins2.add(m2.group(1));
                s = m2.group(1);
            }
        }else
        {
        Pattern pinPattern2 = Pattern.compile(paternField + "=(.*?);");
        ArrayList<String> pins2 = new ArrayList<String>();
        Matcher m2 = pinPattern2.matcher(strManualproResponce2);
        while (m2.find()) {
            pins2.add(m2.group(1));
            s = m2.group(1);
        }
        }

        return s;
    }
private String GetString1(String strManualproResponce2,String paternField){
//TODO自动生成的方法存根
字符串s=null;
if(父字段等信号案例(“AgentId”))
{
Pattern pinPattern2=Pattern.compile(“^”+paternField+”=(*);
ArrayList pins2=新的ArrayList();
匹配器m2=pinPattern2.匹配器(strManualproResponce2);
while(m2.find()){
pins2.添加(m2.组(1));
s=m2组(1);
}
}否则
{
Pattern pinPattern2=Pattern.compile(paternField+“=(*?);”);
ArrayList pins2=新的ArrayList();
匹配器m2=pinPattern2.匹配器(strManualproResponce2);
while(m2.find()){
pins2.添加(m2.组(1));
s=m2组(1);
}
}
返回s;
}

您的问题有点神秘,据我所知,当您要匹配/提取
AgentId
字段的值时,代码不起作用。这个问题似乎与正则表达式有关:
“^”+paternField+”=(.*);“
假设文本
AgentId
将位于字符串的开头,这不是因为在字符串的开头有
IsPrimaryAgentId

此外,当前正则表达式将为
IsPrimaryAgentId
AgentId
返回true,因为它们都包含子字符串:
AgentId
。要解决此问题,您可以使用以下正则表达式:
\\s+AgentId=(*),这将需要在
AgentId
文本前留出空白


另一个选项是(如果您的
AgentId
始终是数字的)使用此选项:
AgentId=(\\d+)

请用您已有的代码提供一些想要的答案和错误答案的示例。请清理您的问题和示例,以便只剩下问题。