powershell - How van I get 2 matches in a regex? -


मेरे पास एक्सएमएल फाइलें हैं, जैसे कि:

  & lt; user & gt; & Lt; फर्स्टनेम & gt; फ़ू बार & lt; / प्रथम नाम & gt; & LT; CompanyName & gt; फू & lt; / CompanyName & gt; & LT; EmailAddress & gt; bar@foo.com< / EmailAddress & gt; & Lt; / उपयोगकर्ता & gt; & LT; उपयोगकर्ता & gt; ...  

मैं आउटपुट & lt; CompanyName & gt;, & lt; ईमेल पता & gt; के रूप में बना, सभी XML फ़ाइलों के माध्यम से पढ़ना चाहता हूं:

< पूर्व> फू, बार @ foo.com उपयोगकर्ता 2, उपयोगकर्ता @ email.com ब्लाह, ब्ला @ ब्लैहॉक

मैं निम्नलिखित स्निपेट का उपयोग कर रहा हूं:

  $ directory = "\\ PC001 \ blah" फ़ंक्शन GetFiles ($ पथ) {foreach (Get-ChildItem $ पथ में $ आइटम) {यदि (टेस्ट-पथ $ item.FullName -PathType कंटेनर) {GetFiles ($ ($ File.extension -eq '.test') {$ content = Get-content $ file.fullname $ pattern = '(? Si) & lt; CompanyName & gt; (। *?) & Lt; / CompanyName & gt; \ n & lt; ईमेल पता & gt; (। *?) & Lt; / EmailAddress & gt;' $ मैचों = [regex] :: मैचों ($ सामग्री, $ पैटर्न) विदेशी मुद्रा ($ मैचों में $ मैच) {$ matches [0]। वेल्यू - बदलें "& lt;। *? & Gt;" }}}  

हालांकि, $ matches खाली है, इसलिए मेरे regex में कुछ गड़बड़ है अगर मैं \ n & lt; ईमेल पता और gt; (। *?) & Lt; / EmailAddress & gt; को छोड़ देता हूं, तो यह काम करता है मैं गलत क्या कर रहा हूं?

  $ पैटर्न = '(? एसआई) & lt; CompanyName & gt; के & lt (*।?); / CompanyName & gt; \ s * & LT; EmailAddress और gt; & lt (*।?); / EmailAddress & gt; '  

इसे आज़माएं। \ s यह सुनिश्चित करेगा कि सभी रिक्त स्थान और नई लाइनें पूरी हो जाएं।


Comments

Popular posts from this blog

java - Can't add JTree to JPanel of a JInternalFrame -

javascript - data.match(var) not working it seems -

javascript - How can I pause a jQuery .each() loop, while waiting for user input? -