2016-03-25 23 views
1

'u bulup değiştirin, aşağıdaki kodla 09 tüm düğümleri bulmak ve bu düğümü silmek için notepad ++ içinde ne arayacağımı söyler misiniz? Örneğin, aşağıdaki xml'de arama yapabilmeyi ve ilk girişi silmeyi ve bununla birlikte kalmayı istiyorum.notepad ++ xml node regex

Boş bir değeri değiştirmeye çalışan <Vehicle>.*?</Vehicle> aramayı denedim, ancak tüm düğümde 09 değerini aramak için ölçütler eklemek istiyorum. "> 09 <" metin dizesi değeri için bir arama koşulu eklemek mümkün mü? Burada

Arama:

<Vehicle> 
    <InvoiceDateTime>2016-03-20T00:00:00</InvoiceDateTime> 
    <InvoiceChargeCents>63</InvoiceChargeCents> 
    <OptionCode>09</OptionCode> 
    <JobEndDateTime>2016-03-19T00:00:00</JobEndDateTime> 
    <AuthorizationCode /> 
    </Vehicle> 
    <Vehicle> 
    <InvoiceDateTime>2016-03-20T00:00:00</InvoiceDateTime> 
    <InvoiceChargeCents>63</InvoiceChargeCents> 
    <OptionCode>35</OptionCode> 
    <JobEndDateTime>2016-03-19T00:00:00</JobEndDateTime> 
    <AuthorizationCode /> 
    </Vehicle> 

Dönüş aşağıda giriş:

<Vehicle> 
    <InvoiceDateTime>2016-03-20T00:00:00</InvoiceDateTime> 
    <InvoiceChargeCents>63</InvoiceChargeCents> 
    <OptionCode>35</OptionCode> 
    <JobEndDateTime>2016-03-19T00:00:00</JobEndDateTime> 
    <AuthorizationCode /> 
    </Vehicle> 

cevap

0

Benim yaklaşımım <Vehicle> açılış düğümünü eşleşen oluşur ve ne açılış ne de kapanış maç için bu alanlarda nokta eşlemeyi sınırlandırmak bir tempered greedy token ile Vehicle düğümleri:

<Vehicle>(?:(?!</?Vehicle>).)*>09<.*?</Vehicle>\R* 

. newline eşleşmesiyle eşleşir etkin olmalıdır.

regex demo'a bakın, boş bir dizeyle değiştirin.

(?:(?!</?Vehicle>).)*, en yakın <Vehicle> açılış düğümünden sonra ilk >09<'a kadar olan herhangi bir metinle eşleşen temperli bir açgözlü belirteçtir. \R* (ya CR-LF ya da CR veya LF), sıfır ya da daha fazla satır dizileri ile uyumlu olduğunu

enter image description here

not edin.

<Vehicle>[^<]*(?:<(?!\/?Vehicle>)[^<]*)*>09<.*?<\/Vehicle>\R* 
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

Aynı metinle eşleşen, ancak daha büyük metinlerle daha verimlidir another regex demo

bakınız:

Ayrıca daha verimli bir model üzerinde desen unrolled versiyonu olacaktır unutmayın.

+1

Harika, bu> 09 TPG

+1

Yanıt kabul edildi, teşekkürler! – TPG