लुआ नियमित अभिव्यक्ति नहीं है मुख्य रूप से एक पूर्ण नियमित क्योंकि अभिव्यक्ति लाइब्रेरी लूआ से भी बड़ी होगी।
क्या लुआ है बजाय matching patterns है, जो (कई उपयोग के मामलों के लिए, लेकिन अभी भी पर्याप्त) जिस तरह से कम शक्तिशाली हैं:
- नहीं "शब्द सीमा" मिलान है,
- कोई विकल्प,
- और कोई लुकहेड या समान नहीं।
मुझे लगता है कि कोई लुआ पैटर्न नहीं है जो आपकी स्ट्रिंग की हर संभव घटना से मेल खाता है, और कोई दूसरा नहीं, जिसका अर्थ है कि आपको किसी भी तरह से इसके आसपास काम करना चाहिए।
स्टुअर्ट, %d*%.?%d*
द्वारा प्रस्तावित पैटर्न, सभी दशमलव संख्याओं (किसी बिंदु के साथ या बिना) से मेल खाता है, लेकिन यह खाली स्ट्रिंग से भी मेल खाता है, जो काफी उपयोगी नहीं है। %d+%.?%d*
डॉट (या बिना किसी डॉट के) कम से कम एक अंक के साथ सभी दशमलव संख्याओं से मेल खाता है, %d*%d.?%d+
डॉट के बाद कम से कम एक अंक के साथ सभी दशमलव संख्याओं से मेल खाता है (या बिना डॉट के)। %.%d+
डॉट से पहले एक अंक के बिना दशमलव संख्या से मेल खाता है।
एक साधारण समाधान इन पैटर्नों में से एक से अधिक खोजना होगा (उदाहरण के लिए, %d+%.?%d*
और %.%d+
दोनों), और परिणामों को गठबंधन करें। फिर उन स्थानों को देखें जहां आपने उन्हें पाया और देखें कि उनके बाद ']' है या नहीं।
मैंने frontier pattern के साथ थोड़ा सा प्रयोग किया।
पैटर्न %f[%.%d]%d*%.?%d*%f[^%.%d%]]
मैचों सब दशमलव संख्या जो कुछ न अंकों और न ही बिंदु (या कुछ भी नहीं द्वारा) है कि से पहले, और पीछा कर रहे हैं कुछ है कि न तो ]
है और न ही अंकों और न ही बिंदु (या कुछ भी नहीं द्वारा) द्वारा। यह भी एक बिंदु से मेल खाता है, हालांकि।
स्रोत
2011-05-31 19:11:48
वैसे, आपकी नियमित अभिव्यक्ति वास्तव में मेल नहीं खाती है कि आप इसे मिलान करना चाहते हैं। यह खाली स्ट्रिंग से मेल खाता है, लेकिन '.11' से मेल नहीं खाता है। –
फिक्स्ड कि, यह वास्तव में आवश्यक नहीं था :) – Goles
यह '0.11' से मेल नहीं खाता है ... आपको लगता है कि आप अपने दूसरे' 0-9] 'के बाद '' '' '' '' 'चाहते हैं। (और खाली स्ट्रिंग से मेल खाने से बचने के लिए शायद '*' में से एक '+' हो।) –