web-dev-qa-db-ja.com

Googleスプレッドシートのクエリ言語、正規表現を使用して一致しますか?

たとえば、テーブルを調べて名前を取得するquery式があります。

   A                   B
1  john, andrew     blah
2  drew, mike       blah

drewを含むすべての行を表示したいので、クエリ式はselect where A contains 'drew'です。 andrewにはdrewが含まれているため、両方の行が表示されますが、式select where A = 'drew'を使用すると、完全一致を探しているため何も表示されません。ここで何をしますか?おそらく正規表現が役立つと考えていましたが、どうすればいいですか?

6
jason

Wordの境界を処理するには、where A matchesの代わりに where A contains が必要です。 .*\bdrew\b.*などの正規表現を使用できます。

  • 文字列「drew」を含む
  • 文字列の左右にワード境界\bがあります(つまり、それに隣接する文字はワード文字にはできません)
  • 文字列の他の場所にある他の文字:.*

最後の箇条書き項目が必要なのは、matchesのロジックがAのコンテンツ全体を特定の式に一致させる必要があるためです(サブストリングの一致を試みるregexmatch関数とは異なります)。

だから、あなたの場合は

=query(A:B, "select * where A matches '.*\bdrew\b.*'")

または、「Drew」(大文字と小文字を区別しない)も一致させたい場合は、

=query(A:B, "select * where lower(A) matches '.*\bdrew\b.*'")
7
user79865