2016-10-06 3 views
-1

この種の正規表現マッチングに助けてくれる人はいますか?最後に反復文字を含む文字列を見つけるための正規表現

例えば、私は、文字列の末尾に反復する文字と異なる文字列を含むリストを検索しています:

  • モンステラ
  • MonsterB
  • MonsterC
  • HeroA
  • HeroB
  • ヒーローC
  • ...

私はこのスクリプトを返すために必要なものこの例では、モンスターヒーロー文字列の唯一の前の部分です。

re.match(r"(.*)[A-Z]", word).group(1) 

しかし、あなただけの最後の文字を削除したい場合は、それが最も効率的ではありません:あなたは絶対に正規表現が必要な場合は

+0

サンプルリストを投稿すると、コンマ区切りで改行が区切られますか? それらは順番にありますか?このような文字列の最後には、1文字しか使用できません。 –

+0

正規表現が絶対に必要ですか?それ以外の単語[: - 1]が動作します –

答えて

0

0

あなたは、単一の大文字で終わる単語をチェックする肯定先読みアサーション(?=...)を使用して、それが全体の単語をアレントのパターンと一致しないことを確認するためにワードboudaries \b...\bを使用することができます。

>>> text = "This re will match MonsterA and HeroB but not heroC or MonsterCC" 
>>> re.findall(r"\b[A-Z][a-z]+(?=[A-Z]\b)", text) 
['Monster', 'Hero'] 

re.findallをそのようなすべての一致をリストに返します。

関連する問題