नियमित अभिव्यक्ति वे क्या करते हैं पर बहुत ही कुशल हैं।
जब कार्य छोटा होता है (उदाहरण के लिए किसी विशेष स्ट्रिंग की उपस्थिति की जांच करना), प्लेटफॉर्म के आधार पर एक स्ट्रिंग फ़ंक्शन रेगेक्स से तेज़ हो सकता है। यहां, आप एक चरित्र सीमा और लंबाई दोनों के लिए जांच कर रहे हैं। यह असंभव है कि लूआ कोड (रन टाइम पर संकलित) nginx द्वारा उपयोग की जाने वाली पीसीआरई रेगेक्स लाइब्रेरी के पूर्व-संकलित सी कोड से तेज़ होगा।
सामान्य तौर पर, a string from 1 to 6 characters with "-", "_", digits and letters
के लिए regex
^[-\w]{1,6}$
है क्योंकि
^
लंगर का दावा है कि हम स्ट्रिंग
\w
शब्द की शुरुआत में हैं के रूप में लिखा जा सकता है चरित्र अक्षर, अंक और अंडरस्कोर वर्ण
- से मेल खाता हैलंगर का दावा है कि हम nginx में स्ट्रिंग के अंत में कर रहे हैं
हालांकि,, ~
(अनुरोध के साथ शुरू होता है) ऑपरेटर हमें शुरुआत लंगर ^
छोड़ सकते हैं। आप कुछ इस तरह लिखना होगा:
location ~ [-\w]{1,6}$ {
# some rewrite code, for example
# rewrite ^([^/]+)/?$ /oldsite/$1 break;
}
एक और के लिए जानकारी का निवाला उत्सुक: लुआ अपने आप में, इसके बाद के संस्करण regex एक लुआ पैटर्न, जहां %
अक्षरों से परे बनाने के लिए \
के स्थान पर प्रयोग किया जाता है में तब्दील किया जा सकता है:
^[-%w]{1,6}$
संदर्भ
इस
जवाब मैं +1 लिखा है होता है – bukart