मैं एक खोज परिणाम पृष्ठ के लिए कोड लिख रहा हूं जिसे खोज शब्द को हाइलाइट करने की आवश्यकता है। शर्तें तालिका कक्षों के भीतर होती हैं (ऐप ग्रिड व्यू पंक्ति कोशिकाओं के माध्यम से पुनरावृत्ति कर रहा है), और इन तालिका कक्षों में HTML हो सकता है।एचटीएमएल टैग के भीतर क्या है, उसे छोड़कर पाठ का मिलान कौन करेगा?
वर्तमान में, मेरी कोड इस (प्रासंगिक नीचे दिखाया गया है जिसे) की तरह दिखता है:
const string highlightPattern = @"<span class=""Highlight"">$0</span>";
DataBoundLiteralControl litCustomerComments = (DataBoundLiteralControl)e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Controls[0];
// Turn "term1 term2" into "(term1|term2)"
string spaceDelimited = txtTextFilter.Text.Trim();
string pipeDelimited = string.Join("|", spaceDelimited.Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries));
string searchPattern = "(" + pipeDelimited + ")";
// Highlight search terms in Customer - Comments column
e.Row.Cells[CUSTOMERCOMMENTS_COLUMN].Text = Regex.Replace(litCustomerComments.Text, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
आश्चर्यजनक यह काम करता है।
<span class="CustomerName">Fred</span> was a classy individual.
और अगर आप "वर्ग" के लिए खोज मैं प्रकाश डाला कोड "उत्तम दर्जे का" में "वर्ग" रैप करने के लिए लेकिन निश्चित रूप से नहीं करना चाहता: लेकिन, कभी कभी पाठ मैं पर मिलान कर रहा हूँ HTML कि इस तरह दिखता है है HTML विशेषता "कक्षा" जो वहां होती है! यदि आप "फ्रेड" की खोज करते हैं, तो इसे हाइलाइट किया जाना चाहिए।
तो एक अच्छा रेगेक्स क्या है जो सुनिश्चित करेगा कि मैच केवल HTML टैग के बाहर ही होगा? यह सुपर कट्टर होने की जरूरत नहीं है। बस यह सुनिश्चित करना कि मैच < के बीच नहीं है और> ठीक काम करेगा, मुझे लगता है।
अगर किसी ने आपके उदाहरण में फ्रेड की खोज की है तो इसे हाइलाइट किया जाना चाहिए? –
हां। पूछने के लिए धन्यवाद। अच्छा प्रश्न। मैं सवाल संपादित करूंगा। – Chris