我正在研究一個基於網絡的幫助系統,該系統將自動插入解釋性文本中的鏈接,將用戶引導至其他幫助主題。我有上百個術語應該被鏈接,即RegEx for a Glossary Function
「手冊和標籤」(大致描述了這些概念) 「刪除手冊和標籤」(描述這一特定的行動) 「進一步瞭解如何加入說明書和標籤」 (再次,更具體的行動)
我有一個正則表達式來查找/替換整個單詞(好醇'\ b),這很好,除了在其他鏈接的術語內發現的鏈接的術語。相反的:
<a href="#">Learn more about manuals and labels</a>
我結束了
<a href="#">Learn more about <a href="#">manuals and labels</a></a>
這讓大家哭了一點點。更改其中的條款將被替換的順序(去最短至最長),意味着我將向獲得:
Learn more about <a href="#">manuals and labels</a>
沒有外部鏈接我真正需要的。
更復雜的是,搜索字詞的大小可以變化,我需要保留原始大小寫。如果我可以做這樣的事情,我會準備就緒:
Regex _regex = new Regex("\\b" + termToFind + "(|s)" + "\\b", RegexOptions.IgnoreCase);
string resultingText = _regex.Replace(textThatNeedsLinksInserted, "<a>" + "$&".Replace(" ", "_") + "</a>));
全部條款,完成此之後,去掉「_」,這將是完美的。 「Learn_more_about_manuals_and_labels」不符合「手冊和標籤」,一切都很好。
編寫文本時,很難讓幫助作者劃定需要替換的術語 - 他們不習慣編碼。而且,這會限制後面添加新詞的靈活性,因爲我們必須返回併爲所有先前編寫的文本添加分隔符。
是否有RegEx讓我用原始匹配中的「_」替換空格?還是有一個不同的解決方案,避開我?
你能澄清一下你的意思是什麼「鏈接的術語」,並顯示「termToFind'和」textThatNeedsLinksInserted「代表什麼的完整示例?這將有助於看到前後的例子。 –
termToFind將是「瞭解更多關於手冊和標籤」,「手冊和標籤」,「刪除手冊和標籤」。 –
textThatNeedsLinksInserted可能是「無法使用手冊和標籤?瞭解有關添加手冊和標籤的更多信息,需要刪除它們?嘗試刪除手冊和標籤。」 –