質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

3回答

14681閲覧

正規表現を使って、括弧の中身を取り出すコードをpythonで作成したい

satopooooon

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2019/01/27 02:26

正規表現を使って「()」の中身を抽出したいのですが、できません。
python3.6でのコードは下記になります。

python

1test = 5(7.9) 2match = re.search(r"(.*?)",test) 3print(match.groups())

ここでprintされるのが「()」だけになってしまいます。
「(7.9)」とprintできるようにしたいのですが、
対策を教えてください。

正規表現の部分は、
「(」+ 「何か文字を0文字以上繰り返しで最短マッチ」 +「)」
と表現していると理解しています。
これであれば、括弧プラス括弧の中身を取得できると思うのですが、できません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

groupsは、正規表現中の(~)で指定したグループに該当する部分を取得するメソッドです。
何もグループが無いと空になります。

「マッチした全体」を得たいときは、match.group(0)を使います。
group(0) → マッチした全体
group(1) → 1つ目のグループ(以下同様) → groups()[0]と同じ(以下同様)

サンプル:

Python

1test="5(7,9)" 2match = re.search(r"(()(.*?))",test) 3print(match.groups()) 4#=> ('(', '7,9') 5print(match.group(0)) 6#=> (7,9) 7print(match.group(1)) 8#=> (

投稿2019/01/27 02:56

編集2019/01/27 03:05
otn

総合スコア84641

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satopooooon

2019/01/27 03:09

お早い回答ありがとうございます。 やりたいことができました。
guest

0

.groupsで参照されるべきグループを指定する必要があります。
r"(.*?)"r"((.*?))"のように内側にカッコをいれてグループの開始、終了を指定ください。

投稿2019/01/27 02:40

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satopooooon

2019/01/27 03:08

お早い回答ありがとうございます。やりたいことができました。 追加でご質問させてください。ご回答いただけたら幸いです。 下記ですが、内側にカッコを入れる理由はなんでしょうか? 「r"(.*?)"→r"((.*?))"のように内側にカッコをいれてグループの開始、終了を指定ください。」
can110

2019/01/27 08:29

どこにカッコを入れるかは自由です。 今回のコードの意図として()の中身の「7.9」を取り出したいと考えたので内側に入れました。 外側に入れると「(7.9)」を取り出せます。
satopooooon

2019/01/27 08:39

追加のご回答ありがとうございました。
guest

0

参考情報

  • 正規表現で括弧内の文字を抜き出す 2018/09/05

https://teratail.com/questions/144859

  • 正規表現:括弧の中身だけをマッチする表現

http://www-creators.com/archives/5462

  • Regexper

https://regexper.com/#%28%5C%28%29%28.*%3F%29%5C%29

  • 正規表現を図示するWebアプリであるRegexperの紹介

https://cpoint-lab.co.jp/article/201805/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%82%92%E5%9B%B3%E7%A4%BA%E3%81%99%E3%82%8Bweb%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E3%81%82%E3%82%8Bregexper%E3%81%AE%E7%B4%B9%E4%BB%8B/

  • 正規表現に見切りをつけるとき

http://leoclock.blogspot.com/2009/01/blog-post_27.html

...
正規表現の処理能力を超えるフォーマットというのが存在します。その典型的な例が、XMLやJSONのように、入れ子になったデータフォーマットです。
...

投稿2019/01/27 04:38

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satopooooon

2019/01/27 04:39

色々と参考情報ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問