में एम्परसैंड से बचने के लिए मुझे एक स्ट्रिंग में सभी को प्रतिस्थापित करने की आवश्यकता है जो HTML इकाई का हिस्सा नहीं है। ताकि स्ट्रिंग "यह & entites >
& <
" वापस आ जाएगी "यह &
entites > & <
"रेगेक्स अनुकूलन - जावा
और मैं इस regex पैटर्न ले कर आए हैं: "& [एक-zA-Z0-9] {2 , 7}; "जो ठीक काम करता है। लेकिन मैं regex में बहुत कुशल नहीं हूं, और जब मैं 100k पुनरावृत्तियों से अधिक गति का परीक्षण करता हूं, तो यह पिछली प्रयुक्त विधि पर दोहरा समय का उपयोग करता है, जिसने रेगेक्स का उपयोग नहीं किया। (लेकिन 100% या तो काम कर रहे हैं)।
Testcode:
long time = System.currentTimeMillis();
String reg = "&(?!&#?[a-zA-Z0-9]{2,7};)";
String s="a regex test 1 & 2 1&2 and &_gt; - &_lt;"
for (int i = 0; i < 100000; i++) {test=s.replaceAll(reg, "&");}
System.out.println("Finished in:" + (System.currentTimeMillis() - time) + " milliseconds");
तो सवाल होगा कि क्या वहाँ है अनुकूलन के कुछ स्पष्ट तरीके इस regex अभिव्यक्ति इसे और अधिक प्रभावी होने के लिए के लिए?
मैं की तरह अंडरस्कोर के साथ entites लिखने के &_gt; था वरना यह प्रतीक कोड के लिए था के रूप में दिखाने चाहते हैं। – Duveit
लगभग हम चारों अपने पाठ कोड प्रारूप उद्धरण के साथ ऐम्परसेंड चारों ओर संपादित करने के लिए करने की कोशिश की। बस इच्छित टेक्स्ट का चयन करें और कोड का उपयोग करें, यह एम्पर्सेंड बनाए रखेगा। – cgp