Skip to main content
 首页 » 编程设计

c#之使用正则表达式处理 bool 短语

2024年02月23日29jpfss

我正在处理搜索页面上的用户输入。如果用户选择“所有单词”类型的搜索,那么我会从搜索文本中删除所有 bool 搜索运算符,并在每个真实单词之间添加 ' AND '。在大多数情况下非常简单。但是,我不知道如何连续删除两个 bool 运算符。

这是我的代码:

// 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 的搜索字符串时,就会出现问题。正则表达式将删除“and”,但不会删除“not”。生成的字符串是“coffeenot tea”——我想要的是“coffee tea”。

正则表达式中需要空格,因此当嵌入真实单词(如“band”或“corps”)时,我不会删除“and”、“or”等。

我通过两次调用 clean 方法暂时解决了这个问题,这将连续删除两个运算符(这可能是我所需要的)。但它不是很优雅,是吗?我真的很想做对。我觉得我缺少一些简单的东西......

请您参考如下方法:

尝试添加单词边界:

"\\b(and|or|not|near)\\b|\""