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

标签 c# regex

我正在处理搜索页面上的用户输入。如果用户选择“所有单词”类型的搜索,那么我会从搜索文本中删除所有 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|\""

关于c# - 使用正则表达式处理 bool 短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525845/

相关文章:

C# 是否可以将 orderby LINQ 子句抽象为函数参数?

ruby - 用于就地多行正则表达式替换的 Shell 命令

python - Pandas DataFrame 的 str 计数中的奇怪行为

java - 使用 Java 的正则表达式从路径名中提取单词

c# 正则表达式拆分二进制字符串

c# - 点燃异常 : Failed to start processor: GridProcessorAdapter

c# - 如何在C#中的文本框中获取维基百科内容

c# - 如何使用正则表达式检查 2 个字符?

c# - 如何格式化包含数字和字符的字符串

c# - 仅在延迟时间后执行方法