2017-09-12 4 views
-1

次のパターンを列とは異なるパターンにフィルタリングする正規表現問合せのフレーミングに役立つ人がいますか。特定のパターンのOracle Regex問合せ

パターン:FIRSTNAME2さんlastName1#FIRSTNAME1さんlastName2

例:以下の書かれたクエリの場合George David#William David

、私はあまりにもfirstName1 lastName1#firstName2 lastName2けどを伴って含むname1#name2パターンを得るのですか。

クエリ:

select column1 from table where REGEXP_LIKE(column1, '(^|\s|\W)#($|\s|\W)'); 
+0

あなたが言及したパターンは私には分かりません:これらの2つの名前だけを検索していますか、または姓がDavidの人ですか?また、正規表現の場合は、こちらのページ(https://regex101.com/)で確認してください。 – g00dy

+0

いいえg00dy。パターンは実際には "firstName1 lastName1#firstName2 lastName2"です。私はちょうどその形式で必要です。 "George David#William David"は単なる例です。 – Nidheesh

+0

@Wiktor Stribizew!を試してみてください。 –

答えて

0

'(^|\s|\W)#($|\s|\W)'パターンは、文字列、空白、または任意の非単語の文字、#の開始と一致し、そして、文字列の終わり、空白、または任意の非ワードチャール。ここでの文脈を制限するものではなく、基本的には#という文字を単語の文字で囲まれていない文字列の中にマッチさせるだけです。

あなたがアンカーと、より具体的なパターン必要があります:あなたは、さらに(1+単語文字がの0+配列と続い\w+([''-]\w+)*のようなものに\w+を変更することにより、必要に応じてアポストロフィやハイフンを許可するように調整することができる

'^\w+\s+\w+#\w+\s+\w+$' 

'または-、その後に1+単語の文字)。

詳細

  • ^ - 文字列の先頭
  • \w+ - 1以上の単語文字
  • \s+ - 1以上の空白
  • \w+ - 1以上の単語文字
  • # - a #
  • \w+\s+\w+ - 上記参照
  • $ - 文字列の最後。
+0

クリアカット! Wiktorに感謝します。 – Nidheesh

関連する問題