正規表現
![]() |
正規表現に基づいて入力文字列要素をフィルタリングします。一致するグループに基づいて変換することもできます。
例
以下の例では、テキスト文字列の`PCollection`を使用してパイプラインを作成します。次に、`Regex`変換を使用して、正規表現を使用してテキスト要素を検索、置換、および分割します。
regex101などのツールを使用して、正規表現の作成とテストを支援できます。左側のサイドバーでPythonフレーバーを指定してください。
たとえば、正規表現`(?P<icon>[^\s,]+), *(\w+), *(\w+)`を見てみましょう。これは、空白`\s`(`[ \t\n\r\f\v]`)またはコンマ`,`ではないものと一致し、コンマが見つかるまで名前付きグループ`icon`に格納します。これは`utf-8`文字列にも一致します。次に、任意の数の空白と、少なくとも1つの単語文字`\w`(`[a-zA-Z0-9_]`)と一致し、これは*名前*の2番目のグループに格納されます。*期間*の3番目のグループでも同じことを行います。
注:正規表現で予期しない文字列エスケープが発生しないように、`'escaped-string'`ではなく`r'raw-string'`などのraw文字列を使用することをお勧めします。
例1:正規表現一致
`Regex.matches`は、正規表現に一致する要素のみを保持し、一致したグループを返します。引数`group`はデフォルトで`0`(全体一致)に設定されていますが、`3`などのグループ番号、または`'icon'`などの名前付きグループに設定できます。
`Regex.matches`は、文字列の先頭から正規表現の照合を開始します。文字列の末尾まで一致させるには、正規表現の末尾に`'$'`を追加します。
文字列の先頭ではなく任意のポイントから照合を開始するには、`Regex.find(regex)`を使用します。
例2:すべてのグループとの正規表現一致
`Regex.all_matches`は、正規表現に一致する要素のみを保持し、*すべてのグループ*をリストとして返します。グループは、正規表現で検出された順序で返され、最初のグループとして`グループ0`(全体一致)が含まれます。
`Regex.all_matches`は、文字列の先頭から正規表現の照合を開始します。文字列の末尾まで一致させるには、正規表現の末尾に`'$'`を追加します。
文字列の先頭ではなく任意のポイントから照合を開始するには、`Regex.find_all(regex, group=Regex.ALL, outputEmpty=False)`を使用します。
例3:キーと値のペアへの正規表現一致
`Regex.matches_kv`は、正規表現に一致する要素のみを保持し、指定されたグループを使用してキーと値のペアを返します。引数`keyGroup`は、`3`などのグループ番号、または`'icon'`などの名前付きグループに設定されます。引数`valueGroup`はデフォルトで`0`(全体一致)に設定されていますが、`3`などのグループ番号、または`'icon'`などの名前付きグループに設定できます。
`Regex.matches_kv`は、文字列の先頭から正規表現の照合を開始します。文字列の末尾まで一致させるには、正規表現の末尾に`'$'`を追加します。
文字列の先頭ではなく任意のポイントから照合を開始するには、`Regex.find_kv(regex, keyGroup)`を使用します。
例4:正規表現検索
`Regex.find`は、正規表現に一致する要素のみを保持し、一致したグループを返します。引数`group`はデフォルトで`0`(全体一致)に設定されていますが、`3`などのグループ番号、または`'icon'`などの名前付きグループに設定できます。
`Regex.find`は、文字列内の正規表現の最初の一致を返します。先頭から照合を開始するには、正規表現の先頭に`'^'`を追加します。文字列の末尾まで一致させるには、正規表現の末尾に`'$'`を追加します。
最初から一致させる必要がある場合は、`Regex.matches(regex)`の使用を検討してください。
例5:正規表現すべて検索
`Regex.find_all`は、正規表現のすべての一致のリストを返し、一致したグループを返します。引数`group`はデフォルトで`0`に設定されていますが、`3`などのグループ番号、`'icon'`などの名前付きグループ、またはすべてのグループを返す`Regex.ALL`に設定できます。引数`outputEmpty`はデフォルトで`True`に設定されていますが、一致が見つからなかった要素をスキップするには`False`に設定できます。
`Regex.find_all`は、文字列内の任意の場所で見つかった正規表現と一致します。先頭から照合を開始するには、正規表現の先頭に`'^'`を追加します。文字列の末尾まで一致させるには、正規表現の末尾に`'$'`を追加します。
最初からすべてのグループを一致させる必要がある場合は、`Regex.all_matches(regex)`の使用を検討してください。
例6:キーと値のペアとしての正規表現検索
Regex.find_kv
は、正規表現のすべての一致をリストとして返します。指定されたグループを使用して、キーと値のペアを返します。引数 keyGroup
は、3
のようなグループ番号、または 'icon'
のような名前付きグループに設定されます。引数 valueGroup
は、デフォルトで 0
(一致全体)に設定されますが、3
のようなグループ番号、または 'icon'
のような名前付きグループに設定することもできます。
Regex.find_kv
は、文字列内の正規表現の最初の一致を検索します。文字列の先頭から一致を開始するには、正規表現の先頭に '^'
を追加します。文字列の末尾まで一致させるには、正規表現の末尾に '$'
を追加します。
最初からキーと値のペアとして一致させる必要がある場合は、Regex.matches_kv(regex)
の使用を検討してください。
例7:正規表現ですべて置換
Regex.replace_all
は、正規表現のすべての出現箇所を別の文字列に置き換えた文字列を返します。replacement
には、後方参照を使用することもできます。
例8:正規表現で最初に置換
Regex.replace_first
は、正規表現の最初の出現箇所を別の文字列に置き換えた文字列を返します。replacement
には、後方参照を使用することもできます。
例9:正規表現分割
Regex.split
は、指定された正規表現で区切られた文字列のリストを返します。引数 outputEmpty
は、デフォルトで False
に設定されていますが、出力リストに空の項目を保持するために True
に設定することもできます。
関連する変換
![]() |
最終更新日: 2024/10/31
必要な情報はすべて見つかりましたか?
すべて役に立ち、明確でしたか?変更したい点はありますか?お知らせください!