Regex: एक स्ट्रिंग में दो टैग के बीच एक उप-स्ट्रिंग खींचने के लिए

मेरे पास निम्न प्रारूप में एक फ़ाइल है:

Data Data
Data
[Start]
Data I want
[End]
Data

मैं एक Regex का उपयोग कर [प्रारंभ] और [end] टैग के बीच से डेटा चाहता हूं को पकड़ना चाहता हूं। क्या कोई मुझे दिखा सकता है कि यह कैसे किया जा सकता है?

0
जोड़ा संपादित
विचारों: 1
"टैग के भीतर पाठ प्राप्त करने के लिए RegEx" के समान - stackoverflow.com/questions/353309/…
जोड़ा लेखक Robinicks, स्रोत

13 उत्तर

$ {\ rm S} _6 $ एक सीमित समूह का ऑटोमोर्फिज्म समूह नहीं है। एचके देखें अय्यर, समीकरण को हल करने पर ऑटो (एक्स) = जी , रॉकी माउंटेन जे। मैथ। 9 (1 9 7 9), नहीं। 4, 653--670, ऑनलाइन उपलब्ध है यहां

यह पत्र साबित करता है कि किसी भी सीमित समूह $ जी $ के लिए, बहुत सारे हैं सीमित समूह $ $ $ $ {\ rm Aut} (X) = G $ के साथ, और यह स्पष्ट रूप से हल करता है $ जी $ के कुछ विशिष्ट मूल्यों के लिए समीकरण। विशेष रूप से, प्रमेय 4.4 $ जी $ के लिए पूरा समाधान देता है एक सममित समूह, और जब $ n = 6 $ ऐसे कोई $ X $ नहीं हैं।

80
जोड़ा

यह शायद इशारा करने लायक है

<�पी> बेलोलिपेटस्की, मिखाइल; Lubotzky,   अलेक्जेंडर। परिमित समूह और   हाइपरबॉलिक कई गुना। आविष्कार। गणित।   162 (2005), नहीं। 3, 45 9-472। MR2198218

जहां यह दिखाया गया है कि प्रत्येक परिमित समूह जी के लिए, आउट (गामा) = जी के साथ एक अनंत समूह गामा है।

30
जोड़ा
एक मजबूत परिणाम Google & _acct = C000022659 और _version = 1 और _urlVersion = 0 और _userid = 501045 और md5 = 0c287de2112b97f650c0dd71c898359f "> यहां sciencedirect.com/… ; गणनीय समूहों के लिए।
जोड़ा लेखक Qiaochu Yuan, स्रोत

दूसरी ओर, $ {\ rm S} _6 $ $ {\ rm SP} _4 (\ mathbb {F} _2) $ is isororic है, ताकि यह एक अन्य श्रेणी (समूहों के अलावा अन्य में एक ऑटोमोर्फिज्म समूह है या सेट)। यह ऑटोमोर्फिज्म का प्रदर्शन 2-टोरसन को देखकर किया जाता है जीनस 2 के एक हाइपरेलिप्टिक वक्र एच के जैकोबियन (यदि $ एच $ द्वारा दिया जाता है $ y ^ 2 = f (x) $, $ 6 $ डिग्री 6 के साथ, फिर 15 गैर-तुच्छ दो टोरसन अंक हैं $ f $ की जड़ों के मतभेदों के द्वारा [गैलोइस मॉड्यूल के रूप में] दिया गया; विकी पेज देखें कमर सतह के लिए)।

15
जोड़ा
आपका मतलब है SP_4 (F_2), मुझे यकीन है, - SL_4 (F_2) S_6 होने के लिए बस इतना बड़ा है।
जोड़ा लेखक Vladimir Dotsenko, स्रोत

There is a whole array of results, going back to G. Birkhoff at 1930s saying that every group is an automorphism group of some universal algebra (or some universal algebra inside some class).
(This really should be merely a comment to the previous answer, but I am still not reputable enough to leave comments).

6
जोड़ा
इस बीच आपके पास टिप्पणी करने के लिए पर्याप्त अंक हैं!
जोड़ा लेखक Stefan Kohl, स्रोत

पर्ल के साथ आप जिस डेटा को चाहते हैं उसे घेर सकते हैं() और बाद में इसे खींच सकते हैं, शायद अन्य भाषाओं में एक समान सुविधा है।

if ($s_output =~ /(data data data data START(data data data)END (data data)/) 
{
    $dataAllOfIt = $1;      # 1 full string
    $dataInMiddle = $2;     # 2 Middle Data
    $dataAtEnd = $3;        # 3 End Data
}
0
जोड़ा
\[start\]\s*(((?!\[start\]|\[end\]).)+)\s*\[end\]

यह आशा है कि [start] और [end] मार्कर भी ड्रॉप करें।

0
जोड़ा
आगे की ओर देखो कम कुशल हो सकता है लेकिन मुझे लगता है कि अगर कोई अप्रत्याशित [start] या [end] है तो आप इसे तोड़ने से कैसे रोकते हैं। किनारे के मामलों के बारे में सोचना और उन्हें पसंद करना हमेशा अच्छा होता है।
जोड़ा लेखक Alex W, स्रोत
\[start\](.*?)\[end\]

Zhich'll एक कैप्चर के भीतर मध्य में पाठ डाल देंगे।

0
जोड़ा
स्वीकृत उत्तर से अधिक बेहतर (सरल) ... :-)
जोड़ा लेखक PhiLho, स्रोत
यह अभी भी स्ट्रिंग को पकड़ नहीं पाएगा जिसमें लाइन ब्रेक हैं
जोड़ा लेखक Doug, स्रोत
@Doug विकल्प dot dot का उपयोग करें। रेगेक्स की कोई समस्या नहीं है।
जोड़ा लेखक AlexR, स्रोत

खैर, अगर आप गारंटी देते हैं कि प्रत्येक स्टार्ट टैग का अंत टैग होता है तो निम्नलिखित काम करेगा।

\[start\](.*?)\[end\]

हालांकि, अगर आपके पास follwoing जैसे जटिल पाठ हैं:

[start] sometext [start] sometext2 [end] sometext [end]

तो आप regex के साथ समस्याओं में भाग लेंगे।

अब निम्न उदाहरण किसी पृष्ठ में सभी गर्म लिंक खींच देगा:

'//i'

उपर्युक्त मामले में हम गारंटी दे सकते हैं कि इसमें कोई घोंसला नहीं होगा:

''

तो, यह एक जटिल सवाल है और इसे सरल जवाब के साथ हल नहीं किया जा सकता है।

0
जोड़ा

मिलान टैग खोजने के लिए रेगेक्स का उपयोग करने के नुकसान की एक और पूरी चर्चा यहां मिल सकती है: http: //faq.perl.org/perlfaq4.html#How_do_I_find_matchi । विशेष रूप से, ध्यान रखें कि सही तरीके से व्याख्या करने के लिए घोंसले के टैग को वास्तव में एक पूर्ण पार्सर की आवश्यकता होती है।

ध्यान दें कि जैसा कि बताया गया है, प्रश्न का उत्तर देने के लिए केस संवेदनशीलता को बंद करने की आवश्यकता होगी। Perl में, यह i संशोधक है:

$ echo "Data Data Data [Start] Data i want [End] Data" \
  | perl -ne '/\[start\](.*?)\[end\]/i; print "$1\n"'
 Data i want 

दूसरी चाल *? क्वांटिफ़ायर का उपयोग करना है जो कैप्चर किए गए मैच की लालची को बंद कर देती है। उदाहरण के लिए, यदि आपके पास एक गैर-मिलान [end] टैग है:

Data Data [Start] Data i want [End] Data [end]

आप शायद कब्जा नहीं करना चाहते हैं:

 Data i want [End] Data
0
जोड़ा

जबकि आप टैग खोलने और बंद करने के बीच डेटा को पार्स करने के लिए नियमित अभिव्यक्ति का उपयोग कर सकते हैं, तो आपको यह तय करना होगा कि यह एक रास्ता है जिसे आप नीचे जाना चाहते हैं। इसके कारण टैग घोंसले की संभावना है: अगर घोंसले के टैग कभी भी हो सकते हैं या कभी भी हो सकते हैं, तो भाषा अब नियमित नहीं होती है, और नियमित अभिव्यक्ति इसे पार्स करने के लिए उचित उपकरण नहीं होती है।

पीसीआरई या पर्ल के नियमित अभिव्यक्तियों जैसे कई नियमित अभिव्यक्ति कार्यान्वयन, बैकट्रैकिंग का समर्थन करते हैं जिनका उपयोग इस मोटे प्रभाव को प्राप्त करने के लिए किया जा सकता है। लेकिन पीसीआरई (पर्ल के विपरीत) असीमित बैकट्रैकिंग का समर्थन नहीं करता है, और वास्तव में आपके पास बहुत सारे टैग होने पर अजीब तरीके से चीजों को तोड़ने का कारण बन सकता है।

एक बहुत ही सामान्य रूप से उद्धृत ब्लॉग पोस्ट है जो इस पर चर्चा करता है, http://kore-nordmann.de/ ब्लॉग / do_NOT_parse_using_regexp.html (इसके लिए Google और वर्तमान में कैश की जांच करें, उन्हें लगता है कि कुछ डाउनटाइम हो रहा है)

0
जोड़ा
$text ="Data Data Data start Data i want end Data";
($content) = $text =~ m/ start (.*) end /;
print $content;

I had a similar problem for a while & I can tell you this method works...

0
जोड़ा

अंतरिक्ष वर्णों और बिंदुओं के साथ टैग के बीच पाठ खींचने के लिए इस प्रश्न का संदर्भ लें ( )

[\S\s] is the one I used

किसी भी चरित्र से मेल खाने के लिए Regex नई लाइनों सहित

0
जोड़ा

Reading the text with in the square brackets [] i.e.[Start] and [End] and validate the array with a list of values. jsfiddle http://jsfiddle.net/muralinarisetty/r4s4wxj4/1/

var mergeFields = ["[sitename]",
                   "[daystoholdquote]",
                   "[expires]",
                   "[firstname]",
                   "[lastname]",
                   "[sitephonenumber]",
                   "[hoh_firstname]",
                   "[hoh_lastname]"];       

var str = "fee [sitename] [firstname] \
sdfasd [lastname] ";
var res = validateMeargeFileds(str);
console.log(res);

function validateMeargeFileds(input) {
    var re = /\[\w+]/ig;
    var isValid;
    var myArray = input.match(re);

    try{
        if (myArray.length > 0) {
            myArray.forEach(function (field) {

                isValid = isMergeField(field);

                if (!isValid){
                   throw e;                        
                }
            });
        }
    }
    catch(e) {        
    }

    return isValid;
}

function isMergeField(mergefield) {
    return mergeFields.indexOf(mergefield.toLowerCase()) > -1;
}
0
जोड़ा