私の c#.net アプリケーションには、ブール論理が有効な会社名検索フィールドがあります。そのため、ユーザーは「Hewlett-Packard」を検索してその会社を見つけるか、「Foo -tankers」のいずれかを検索して、結果セットが「Foo」という単語を含むが「tankers」という単語を含まないすべての会社になるようにする必要があります。
ハイフンの前に空白がない企業検索と、ハイフンの前に 1 つ以上の空白がある企業検索を区別するには、どの正規表現を使用すればよいですか?
私の c#.net アプリケーションには、ブール論理が有効な会社名検索フィールドがあります。そのため、ユーザーは「Hewlett-Packard」を検索してその会社を見つけるか、「Foo -tankers」のいずれかを検索して、結果セットが「Foo」という単語を含むが「tankers」という単語を含まないすべての会社になるようにする必要があります。
ハイフンの前に空白がない企業検索と、ハイフンの前に 1 つ以上の空白がある企業検索を区別するには、どの正規表現を使用すればよいですか?
(負の) 後読みアサーションを使用したい。これは、空白文字の後にハイフンがない場合に一致します。
(?<!\s)-
これは、空白文字に続くハイフンに一致します。
(?<=\s)-
ただし、全体として、次の 2 つの式を使用して、それぞれ会社名と除外を検索します。
\w[\w-]*
-\w[\w-]*
おそらく、ユーザーは検索フィールドに任意の数の用語を任意の順序で入力できます。その場合、文字列全体に対して正規表現を実行することは、おそらく最善の方法ではありません。
より良い方法は、空白を区切り文字として使用して 、検索テキストを個々の用語に分割することです。
これを行うと、ダッシュで始まる用語を簡単に確認できます。