我的c#.net应用程序有一个支持布尔逻辑的公司名称搜索字段。因此,它应该允许用户搜索“Hewlett-Packard”以找到该公司或“Foo -tankers”,其中结果集是所有公司的单词“Foo”但没有“tank”字样。
我应该使用什么正则表达式来区分连字符前面没有空格的公司搜索和连字符前面有一个或多个空格的公司搜索?
答案 0 :(得分:0)
您想要使用(负面)lookbehind断言。这匹配空格字符后面的连字符而不是:
(?<!\s)-
这匹配 遵循空格字符的连字符:
(?<=\s)-
总的来说,我会分别使用这两个表达式来查找公司名称和排除:
\w[\w-]*
-\w[\w-]*
答案 1 :(得分:0)
据推测,用户可以以任意顺序在搜索字段中输入任意数量的术语。如果是这样,对整个字符串执行正则表达式可能不是最好的方法。
更好的方法是split the search text into individual terms,使用空格作为分隔符。
执行此操作后,只需查看哪些字词以短划线开头即可。