Find out which group matches in Java regex without linear search? -
मेरे पास कुछ प्रोग्राममैटिक इकट्ठा हुए विशाल रिजक्स है, जैसे <
(A) | (B ) | (सी) | ...
प्रत्येक उप-पैटर्न उसके कैप्चरिंग समूह में है जब मुझे कोई मैच मिलता है, तो मुझे यह कैसे पता चलेगा कि कौन सी समूह बिना किसी निरपेक्ष स्ट्रिंग के लिए प्रत्येक समूह (i)
का परीक्षण कर रहा है?
यदि आपका regex प्रोग्रामेटिक रूप से जेनरेट किया गया है, तो क्यों नहीं प्रोग्रामैटिक रूप से n अलग regexes उत्पन्न करें और उनमें से प्रत्येक का परीक्षण करें? जब तक कि वे एक सामान्य उपसर्ग और जावा रेगेक्स इंजन को चतुर रूप से साझा करते हैं, तो सभी विकल्पों को भी परीक्षण किया जाता है।
अपडेट: मैं सिर्फ सन जावा स्रोत के माध्यम से देखा, विशेष रूप से, java.util.regex.Pattern $ Branch .मेल (), और यह भी सभी विकल्पों पर एक रैखिक खोज भी करता है, बदले में प्रत्येक की कोशिश कर रहा है अन्य जगह जहां शाखा का उपयोग किया जाता है, आम उपसर्गों के किसी भी प्रकार के अनुकूलन का सुझाव नहीं देता।
Comments
Post a Comment