Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在连字符前不加空格的情况下,正则表达式匹配连字符的公司名称?_Regex - Fatal编程技术网

Regex 如何在连字符前不加空格的情况下,正则表达式匹配连字符的公司名称?

Regex 如何在连字符前不加空格的情况下,正则表达式匹配连字符的公司名称?,regex,Regex,我的c#.net应用程序有一个启用布尔逻辑的公司名称搜索字段。因此,它应该允许用户搜索“Hewlett-Packard”以找到该公司,或者搜索“Foo-tankers”,其中结果集是所有有“Foo”一词但没有“tankers”一词的公司 我应该使用什么正则表达式来区分那些在连字符之前没有空格的公司搜索和那些在连字符之前有一个或多个空格的公司搜索?您想使用(否定的)lookback断言。这与不在空白字符后面的连字符相匹配: (?<!\s)- (?<=\s)- 据推测,用户可以在搜索

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

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

您想使用(否定的)lookback断言。这与不在空白字符后面的连字符相匹配:

(?<!\s)-
(?<=\s)-

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

更好的方法是使用空格作为分隔符


一旦你这样做了,很容易就能看出哪些术语以破折号开头。

在看到Dan1111的帖子之前,我已经将Aceong87的答案标记为公认答案。Dan是正确的:拆分函数是一条可行之路。非常感谢。
\w[\w-]*

-\w[\w-]*