我正在處理搜索頁面上的用戶輸入。如果用戶選擇「全部單詞」類型搜索,則從搜索文本中刪除任何布爾搜索運算符,並在每個真實單詞之間插入' AND '
。在大多數情況下非常簡單。但是,我無法弄清楚如何刪除連續的兩個布爾運算符。正則表達式的過程布爾短語
這裏是我的代碼:
// create the regex
private static Regex _cleaner =
new Regex("(\\s+(and|or|not|near)\\s+)|\"",
RegexOptions.Compiled | RegexOptions.IgnoreCase);
// call the regex
_cleaner.Replace(searchText, " ")
當用戶進入像coffee and not tea
搜索字符串出現問題。正則表達式將刪除'和',但不是'不'。由此產生的字符串是'咖啡茶' - 我想要的是'咖啡茶'。
在正則表達式中需要空格,所以當嵌入真實詞語(比如'band'或'corps')時,我不會刪除'和','或'等。
我已經通過調用clean方法兩次臨時解決了這個問題,這將刪除連續的兩個操作符(這可能是我所需要的)。但它不是很優雅,是嗎?我真的很想做正確的事。我覺得我失去了一些東西簡單...
SQL注入安全嗎? –
你的正則表達式不會「不喝咖啡和茶」,這與「茶而不是咖啡」是一回事。 –
@Yurij - 是的 - 那是在其他地方處理的 – Ray