1

キャプチャ正規表現全体を括弧で囲むことにより、 delimiters を削除せずに文字列を分割しています。その意図は、1 つ以上の '[!?]' 文字で終わる文を一致させることです。

不要な空のキャプチャ グループを取得するようになったことを除いて、すべてが素晴らしいです。

>>> re.compile(r'([^!?]*[!?]+)').split('Great customer service!  Very happy! Will go again')
['', 'Great customer service!', '', '  Very happy!', ' Will go again']

>>> re.compile(r'([^!?]{2,}[!?]+)').split('Great customer service!  Very happy! Will go again')
['', 'Great customer service!', '', '  Very happy!', ' Will go again']

(これはすべて、より複雑な正規表現とサブ関数内に深くネストされているため、実際にはハックは必要ありません。ソリューションを正規表現にしたいので、より複雑な正規表現に折りたたむことができます)

4

1 に答える 1

2

この正規表現は機能しているようです:

r'(?<=[!?])\s+(?=\S)'

私がやろうとしているのは、文間の空白を一致させることですが、前の文が?orで終わる場合に限り!ます。これはあなたのアプローチよりも少しハック的ではありませんが、おそらく最善の方法です。正規表現で自然言語を操作することは、定義上ハックです。:D

于 2013-06-19T00:54:33.193 に答える