Hi everyone! I'm the author of code.mu :)
I'd love to chat with my non-Russian audience. I'm looking for your feedback on the site and the translation quality. Let's chat:)
⊗pyPmREChG 39 of 129 menu

Python正規表現における文字グループ

特定の文字グループ全体を一度に選択できる特別なコマンドが存在します。 コマンド \d0 から 9 までの数字を意味します。 コマンド \w は数字、ラテン文字、またはアンダースコアを意味します。 コマンド \s はスペースまたは空白文字(スペース、改行、タブ)を意味します。 コマンドを大文字で書くことで、その意味を反転させることができます。 例えば、\d が数字なら、\D は数字以外を意味します。

すべての数字を見つけてみましょう:

txt = '1 12 123' res = re.sub('\d', '!', txt) print(res)

コードの実行結果:

'! !! !!!'

繰り返し演算子はグループコマンドを1つの単位として扱うため、グループ化の括弧は必要ありません。 次の例では、検索パターンは 0から9の数字が1回以上出現する という意味になります:

txt = '1 12 123 abc @@@' res = re.sub('\d+', '!', txt) print(res)

コードの実行結果:

'! ! ! abc @@@'

次の例では、検索パターンは 0から9の数字以外の文字が1回以上出現する という意味になります:

txt = '123abc3@@' res = re.sub('\D+', '!', txt) print(res)

コードの実行結果:

'123!3!'

この例では、検索パターンは 空白文字が1回出現する という意味になります:

txt = '1 12 123 abc @@@' res = re.sub('\s', '!', txt) print(res)

コードの実行結果:

'1!12!123!abc!@@@'

この例では、検索パターンは 空白文字以外の文字が1回以上出現する という意味になります。 スペースで区切られたすべての部分文字列が '!' に置き換わります:

txt = '1 12 123 abc @@@' res = re.sub('\S+', '!', txt) print(res)

コードの実行結果:

'! ! ! ! !'

この例では、検索パターンは 数字または英字が1回以上出現する という意味になります。 数字と英字で構成されるすべての部分文字列が '!' に置き換わります:

txt = '1 12 123a Abc @@@' res = re.sub('\w+', '!', txt) print(res)

コードの実行結果:

'! ! ! ! @@@'

この例では、検索パターンは 数字でも英字でもない文字が1回以上出現する という意味になります。 この定義に当てはまるのは、今回の場合 '@@@' とすべてのスペース(これらも数字でも英字でもないため)です。 末尾の1つの '!' は、先頭にスペースがある文字列 ' @@@' が変換されたものであることに注意してください:

txt = '1 12 123 Abc @@@' res = re.sub('\W+', '!', txt) print(res)

コードの実行結果:

'1!12!123!Abc!'

練習問題

次の文字列があります:

txt = 'a1a a2a a3a a4a a5a aba aca'

次の条件を満たす文字列を見つける正規表現を書いてください: 両端が文字 'a' で、その間に1つの数字がある

次の文字列があります:

txt = 'a1a a22a a333a a4444a a55555a aba aca'

次の条件を満たす文字列を見つける正規表現を書いてください: 両端が文字 'a' で、その間に任意の数の数字がある

次の文字列があります:

txt = 'aa a1a a22a a333a a4444a a55555a aba aca'

次の条件を満たす文字列を見つける正規表現を書いてください: 両端が文字 'a' で、その間に任意の数の数字がある(数字が0個、つまり文字列 'aa' も含む)

次の文字列があります:

txt = 'avb a1b a2b a3b a4b a5b abb acb'

次の条件を満たす文字列を見つける正規表現を書いてください: 両端が文字 'a''b' で、その間が数字でもスペースでもない

次の文字列があります:

txt = 'ave a#b a2b a$b a4b a5b a-b acb'

次の条件を満たす文字列を見つける正規表現を書いてください: 両端が文字 'a''b' で、その間が英字でも数字でもスペースでもない

次の文字列があります:

txt = 'ave a#a a2a a$a a4a a5a a-a aca'

すべてのスペースを '!' に置き換える正規表現を書いてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否