2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

プログラミングコンテストの過去問の練習問題を題材に、文字列の置換、正規表現について解説します。

1.プログラミングコンテスト過去問の課題

以下の問題です。

文字列 S が与えられるので、正規表現を用いて、文字列 S において以下のパターンを検索し、マッチした部分をすべて削除した文字列を出力してください。
パターン: 文字列 import の後に 1 文字以上の半角英数字列が続く文字列
ただし、検索対象のパターンが複数回出現する場合は、最初に出現するものを繰り返し削除してください。
検索は最左最長一致でおこなってください。
また、文字列の先頭の位置を 0 として、各文字の位置を左から順に 0, 1, 2, ... とします。

2.実装したソースコード

私の方で実装したソースコードは以下になります。

import re

s = input()
ans = re.sub(r'import [0-9A-Za-z]+',r'',s)
print(ans)

3.正規表現の解説

pythonでは以下の表にまとめた正規表現を使います。
(表は私の忘備録でもあります)

文字 説明 同様 マッチする マッチしない
\d 任意の数字 [0-9]
\D 任意の数字以外 [^0-9]
\s 任意の空白文字 [\t\n\r\f\v]
\S 任意の空白文字以外 [^\t\n\r\f\v]
\w 任意の英数字 [a-zA-Z0-9_]
\W 任意の英数字以外 [\a-zA-Z0-9_]
\A 文字列の先頭 ^
\Z 文字列の末尾 $
. 任意の一文字 - a.c abc, acc, aac abbc, accc
^ 文字列の先頭 - ^abc abcdef defabc
$ 文字列の末尾 - abc$ defabc abcdef
* 0回以上の繰り返し - ab* a, ab, abb, abbb aa, bb
+ 1回以上の繰り返し - ab+ ab, abb, abbb a, aa, bb
? 0回または1回 - ab? a, ab abb
{m} m回の繰り返し - a{3} aaa a, aa, aaaa
{m,n} m〜n回の繰り返し - a{2, 4} aa, aaa, aaaa a, aaaaa

4.私が正規表現を使う場合

正規表現は表を見つつ、簡単なスクリプトを作って実証しています。

最後に

文字列の置換を通して、正規表現について記事にしました。参考にしていただけると幸いです

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?