4

'HDMWhoSomeThing'のような文字列を'HDM Who Some Thing'正規表現に置き換えたいと思います。

そこで、大文字で始まる単語、または大文字だけで構成される単語を抽出したいと思います。文字列'HDMWho'の最後の大文字は、実際には単語の最初の文字Who- であり、単語に含めるべきではないことに注意してくださいHDM

この目標を達成するための正しい正規表現は何ですか? 私は多くの正規表現を試しまし[A-Z][a-z]+たが、成功しませんでした。もちろんなしで -[A-Z][a-z]+私を与えます。'Who Some Thing''HDM'

何か案は?ありがとう、ルッキー

4

5 に答える 5

2

一発ギャグ :

'' .join(aまたはb for a、b in re.findall('([AZ] [az] +)|(?:([AZ] *)(?= [AZ]))'、s))

正規表現を使用する

([AZ] [az] +)|(?:([AZ] *)(?= [AZ]))

于 2010-02-16T14:59:17.450 に答える
1

したがって、この場合の「単語」は次のとおりです。

  1. 任意の数の大文字-最後の大文字の後に小文字が続く場合を除きます。
  2. 1つの大文字とそれに続く任意の数の小文字。

だから試してみてください:

([A-Z]+(?![a-z])|[A-Z][a-z]*)

最初の交替には、すべて大文字の単語と最初の大文字の単語の間の境界を処理する負の先読み(?![az])が含まれます。

于 2010-02-16T14:59:04.893 に答える