मैं कुछ कोड के प्रदर्शन में सुधार करने की कोशिश कर रहा हूं। यह इस तरह दिखता है:मैं कैसे निर्धारित करूं कि स्ट्रिंग नियमित अभिव्यक्ति नहीं है या नहीं?
public boolean isImportant(String token) {
for (Pattern pattern : patterns) {
return pattern.matches(token).find();
}
}
मैं क्या देखा है पैटर्न के कई कोई नियमित अभिव्यक्ति निर्माणों के साथ सरल स्ट्रिंग शाब्दिक होने लगते हैं कि।
public boolean isImportant(String token) {
if (importantList.contains(token)) return true;
for (Pattern pattern : patterns) {
return pattern.matches(token).find();
}
}
मैं प्रोग्राम के रूप में कैसे तय करते हैं कि एक विशेष स्ट्रिंग कोई शामिल हैं: तो मैं, इस प्रकार है जैसे बस इसके स्थान पर कोई और अधिक महंगा पैटर्न मैच प्रदर्शन की एक अलग सूची (importantList) में इन स्टोर और एक समानता परीक्षण करना चाहते हैं नियमित अभिव्यक्ति संरचनाएं?
संपादित करें: मुझे यह जोड़ना चाहिए कि उत्तर को प्रदर्शन-संवेदनशील होने की आवश्यकता नहीं है। (यानी नियमित अभिव्यक्तियों का उपयोग किया जा सकता है) मैं मुख्य रूप से आयातक() के प्रदर्शन से चिंतित हूं क्योंकि इसे लाखों बार कहा जाता है, जबकि पैटर्न की शुरुआत केवल एक बार की जाती है।
यह निर्धारित करने के लिए एक स्ट्रिंग पर एक नियमित अभिव्यक्ति नहीं करनी चाहिए कि यह नियमित अभिव्यक्ति के रूप में प्रत्येक स्ट्रिंग का उपयोग करने से हर बार एक नियमित अभिव्यक्ति है या नहीं? –
@ माइकएम: वह वह नहीं है जो वह पूछ रहा है। 'हैलो' एक पूरी तरह से वैध regex है। –
संभव नहीं है (कम से कम आसान या सार्थक नहीं, जब तक आपको सादा स्ट्रिंग अक्षर में कुछ पैटर्न नहीं मिलता)। एक साधारण स्ट्रिंग शाब्दिक एक वैध regex पैटर्न है। – AC1