如何正则表达式匹配连字符的公司名称,连字符前没有空格



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

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

据推测

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

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

完成此操作后,查看哪些术语以破折号开头是一件简单的事情。

你想要使用(负的)后视断言。这匹配跟在空格字符后面的连字符:

(?<!s)-

这匹配了空格字符后面的连字符:

(?<=s)-

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

w[w-]*
-w[w-]*

相关内容

最新更新