2014-10-15 1 views
-2

У меня есть проблема с поиском многострочных строк: У меня есть этот текст в «contractBytes» вар:Java регулярного выражение не соответствуют многострочным строкам

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Records xmlns="http://www.datapump.cig.com"> 
<Contract phaseId="4" operation="2"> 
    <General> 
     <ContractCode>8848</ContractCode> 
     <DateOfSignature>2009-09-08</DateOfSignature> 
     <CreditPurpose id="20"/> 
     <NegativeStatus id="4"/> 
     <ApplicationDate>2009-09-08</ApplicationDate> 
     <StartDate>2009-09-08</StartDate> 
     <ExpectedEndDate>2011-03-31</ExpectedEndDate> 
     <Subjects> 
      <Subject roleId="1"> 
       <Entity> 
        <Individual gender="1"> 
         <FirstName> 
<Text language="uk-UA">украинский</Text> 
         </FirstName> 
         <Surname> 
<Text language="uk-UA">Первый</Text> 
         </Surname> 
         <FathersName> 
<Text language="uk-UA">контрагент</Text> 
         </FathersName> 
         <Classification id="1"/> 
         <DateOfBirth>1980-12-06</DateOfBirth> 
         <Residency id="1"/> 
         <Citizenship code="UA"/> 
         <MaritalStatus id="2"/> 
         <Identifications> 
<Identification typeId="2"> 
<Number>2554209876</Number> 
</Identification> 
<Identification typeId="4"> 
<Number>ВЦ620997</Number> 
<IssueDate>1997-04-01</IssueDate> 
<Authority language="uk-UA">Дебальцевский ГОУМВД Украины в Донецкой области</Authority> 
</Identification> 
<Identification typeId="1"> 
    <Number>2554209876</Number> 
</Identification> 
         </Identifications> 
         <Addresses> 
<Address typeId="2"> 
<Street> 
    <Text language="uk-UA">м. Kharkov, вул. Street, буд. 1, кв. 1</Text> 
</Street> 
</Address> 
         </Addresses> 
        </Individual> 
       </Entity> 
      </Subject> 
     </Subjects> 
    </General> 
    <Type> 
     <Credit paymentPeriodId="9" paymentMethodId="6"> 
      <CreditLimit currency="USD">7800.0</CreditLimit> 
      <Records> 
       <Record accountingDate="2011-04-20"> 
        <CreditUsage id="3"/> 
        <ResidualAmount currency="USD">7800.0</ResidualAmount> 
        <OverdueAmount currency="USD">0.0</OverdueAmount> 
       </Record> 
      </Records> 
     </Credit> 
    </Type> 
</Contract> 

Я пытаюсь получить часть с помощью regex:

Pattern p = Pattern.compile("(<Contract)(.)*(Contract>)", Pattern.DOTALL); 
Matcher m = p.matcher(contractBytes); 
for (;m.find();) 
{ 
    if (m.group(1).contains("<ContractCode>" + contractCode + "</ContractCode>")) 
    { 
     dealXmlMap.put(Long.parseLong(contractCode), m.group(1)); 
     break; 
    } 
} 

Но m.find всегда возвращает false. Что мне делать с этим шаблоном, чтобы получить текст из contractBytes var?

+1

Вы, вероятно, следует прекратить попытки разобрать XML вручную, прежде чем [ушиблись] (http://stackoverflow.com/a/1732454/2517719). http://en.wikipedia.org/wiki/Java_API_for_XML_Processing – Floegipoky

ответ

1
(<Contract)(.*)(Contract>) 

Try this.See demo. (.)* вы захватили только первый символ не всех.

http://regex101.com/r/dZ1vT6/25

+0

Для любви к Богу не дают пули человеку, смотрящему вниз по стволу пистолета и жалуясь, что он не стреляет – Floegipoky

+0

Я пробовал, но это не помогло – user3734984

+0

@ user3734984 это работает. В вашем коде есть какая-то другая ошибка. Может быть, какой-то парень из java может сказать вам – vks

 Смежные вопросы

  • Нет связанных вопросов^_^