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

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

新規登録して質問してみよう
ただいま回答率
85.46%
正規表現

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1250閲覧

文章を句点で分割する(正規表現)

Yuta_Sugawara

総合スコア7

正規表現

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/09/11 12:21

前提・実現したいこと

例えば「腹が減った。だからマクドナルド(以下、マックという。)に行った。」を句点“。”で分割したいと考えてます。ただし、その句点等自体を含んでリスト化したいです。

試したこと

python3

1txt = '腹が減った。だからマクドナルド(以下、マックという。)に行った。' 2sen = re.findall(r'.+?(?<=[。)])', txt) 3print(sen) #→['腹が減った。', 'だからマクドナルド(以下、マックという。', ')に行った。']

このようになっていますが、。) の部分を分割せずに取り出したいのですが、その方法が分かりません...。

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

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

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

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

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

Zuishin

2021/09/11 12:23

分割した後、カッコが開いていたら閉じるまで連結していけばいいのでは?
guest

回答3

0

python

1import re 2 3txt = '腹が減った。だからマクドナルド(以下、マックという。)に行った。' 4sen = re.findall(r'[^()()]*?(?:[((].*?[))])?[^()()]*?。', txt) 5print(sen)

result

1['腹が減った。', 'だからマクドナルド(以下、マックという。)に行った。']

カッコで目がチカチカする……

投稿2021/09/11 13:32

Daregada

総合スコア11990

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

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

0

txtの括弧は全角なのに、正規表現に書いてある括弧は半角だけですね。これは意図的?

分割条件が不明瞭ですが、「次に閉じ括弧が続かない句点で終える」だと、

Python

1re.findall(r'.+?。(?![))])', txt)

投稿2021/09/11 12:43

otn

総合スコア84804

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

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

0

ベストアンサー

直後に がない句点だけを選ぶことは容易です。

Python

1sen = re.findall(r'.+?。(?!))', txt)

ただしこの場合、括弧内に複数の文が含まれる場合はカバーできません。
そのときの扱いについても検討の必要がありますね。

書いてみた

上記問題をケアした方法。

Python

1import re 2 3txt = '腹が減った。だからマクドナルド(以下、マックという。)に行った。今週三度目(行き過ぎである。かなり。)のマック。' 4sen = re.findall(r'(?:[^()()。]+|[((][^()()]*[))]+)*。', txt) 5print(sen)

実行結果 Wandbox

['腹が減った。', 'だからマクドナルド(以下、マックという。)に行った。', '今週三度目(行き過ぎである。かなり。)のマック。']

さすがに括弧が入れ子になることは考慮していませんが。

投稿2021/09/11 12:36

編集2021/09/11 14:53
LouiS0616

総合スコア35660

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問