2011-05-16 21 views
8

क्या क्वांटिफ़ायर का उपयोग कर रहे रेगेक्स से एकाधिक कैप्चर समूह प्राप्त करने का कोई तरीका है?क्वांटिफायर का उपयोग कर एकाधिक रेगेक्स कैप्चर समूह

<td>Data 1</td> 
<td>data 2</td> 
<td>data 3</td> 
<td>data 4</td> 

अभी, अगर मैं इस तरह एक regex बारे में:

(?:<td>(.+?)<\/td>\s*){4} 

मैं केवल एक साथ खत्म उदाहरण के लिए, मैं (से निपटने के लिए मैं क्या है से सरलीकृत) इस डेटा है कहना समूह को पकड़ें, अंतिम एक "डेटा 4"

<td>(.+?)<\/td>\s*<td>(.+?)<\/td>\s*<td>(.+?)<\/td>\s*<td>(.+?)<\/td> 

हाँ, मुझे अच्छी तरह पता है कि मैं इस हैक कर सकते हैं कि हूँ: वहाँ परिमाणक का उपयोग करें और 4 पर कब्जा समूहों के साथ समापन, या हूँ मैं इस तरह regex लिखने के लिए मजबूर कर दिया है कि मैं क्या चाहते हैं करने के लिए एक रास्ता है सरल उदाहरण प्रोग्रामेटिक रूप से बहुत आसान है और फिर लागू करें और आवश्यक regexes या सरल पैटर्न मिलान। जिस डेटा के साथ मैं काम कर रहा हूं वह कहीं अधिक जटिल है और मैं वास्तव में सभी पार्सिंग को संभालने के लिए रेगेक्स का उपयोग करना चाहता हूं।

+3

मुझे लगता है कि आप पिछले पैराग्राफ याद किया। यह "रेगेक्स के साथ कुछ संभव है" का सवाल है, न कि "एचटीएमएल पार्स करने का सबसे अच्छा तरीका क्या है"। –

+0

मैंने अपनी पहली टिप्पणी हटा दी है, लेकिन मैं इस बात से असहमत हूं कि यहां अवधारणा का पीछा करने लायक है। Regex * बहुत * सरल मामलों में HTML को पार्स करने के लिए केवल अच्छा है। ऐसा नहीं है। – lonesomeday

+2

फिर, यह एचटीएमएल को पार्स करने के बारे में नहीं है, इसके बारे में यह है कि रेगेक्स क्वांटिफायर का उपयोग करके कई समूहों को कैप्चर कर सकता है या नहीं। बिंदु को चित्रित करने के लिए यह एक साधारण उदाहरण है। –

उत्तर

9

php के साथ आप preg_match_all उपयोग कर सकते हैं:

$str = '<td>Data 1</td> 
<td>data 2</td> 
<td>data 3</td> 
<td>data 4</td> 
'; 
preg_match_all('/(?:<td>(.+?)<\/td>\s*)/', $str, $m); 
print_r($m); 

उत्पादन:

Array 
(
    [0] => Array 
     (
      [0] => <td>Data 1</td> 

      [1] => <td>data 2</td> 

      [2] => <td>data 3</td> 

      [3] => <td>data 4</td> 

     ) 

    [1] => Array 
     (
      [0] => Data 1 
      [1] => data 2 
      [2] => data 3 
      [3] => data 4 
     ) 

) 
+0

मैंने इसे ऊपर उठाया क्योंकि इसका एक और जटिल संस्करण मैं पहले से ही कर रहा हूं। यह रेजीक्स कैप्चर समूहों के बारे में मेरे प्रश्न का उत्तर नहीं देता है हालांकि क्वांटिफायर के साथ। जैसा कि मैंने प्रश्न की मूल सामग्री में कहा है, मैं इस प्रश्न के प्रोग्रामेटिक उत्तर से बचना चाहता हूं और यह जानना चाहता हूं कि यह शुद्ध रेगेक्स परिप्रेक्ष्य से संभव है या नहीं। –

+0

@ टोनी लुकासवेज: धन्यवाद। दुर्भाग्य से, टिम पिट्ज़कर ने एक टिप्पणी में कहा, यह PHP में संभव नहीं है। – Toto

संबंधित मुद्दे