0

我的 c#.net 应用程序有一个启用布尔逻辑的公司名称搜索字段。因此,它应该允许用户搜索“Hewlett-Packard”以找到该公司或“Foo -tankers”,其中结果集是所有带有“Foo”一词但没有“tankers”一词的公司。

我应该使用什么正则表达式来区分连字符前没有空格的公司搜索与连字符前有一个或多个空格的公司搜索?

4

2 回答 2

0

您想使用(否定的)lookbehind 断言。这匹配一个跟在空格字符后面的连字符:

(?<!\s)-

这匹配一个跟在空格字符后面的连字符

(?<=\s)-

总的来说,我会分别使用这两个表达式来查找公司名称和排除项:

\w[\w-]*

-\w[\w-]*
于 2012-10-02T13:16:27.787 回答
0

据推测,用户可以在搜索字段中以任意顺序输入任意数量的术语。如果是这样,对整个字符串执行正则表达式可能不是最好的方法。

更好的方法是将搜索文本拆分为单独的术语,使用空格作为分隔符。

完成此操作后,很容易查看哪些术语以破折号开头。

于 2012-10-02T13:39:40.150 回答