2011-08-17 7 views
2

正確に3つの大文字に続いて小さな文字の後に正確に3つの大文字が続く正規表現が必要です。 たとえば、ASDFgHJKではなくASDfGHJと一致する必要があります。大文字3文字と小文字に続いて大文字3文字を組み合わせた正規表現ですか?

+6

陽気です。私はちょうどhttp://www.pythonchallenge.comのパート3を見ていて、 "python re capital letter"の検索でこのページを指しています。 OPが不正行為をしようとしていたように見える...面倒なことは、パート4に行くために答えをどう使うべきかまだ分かりません... –

+0

HO WORK:P:P:P –

+0

あなたが組み合わされて見つけたすべての言葉は、答えであるものを見つけるだけではありません。 – galfisher

答えて

17
r'\b[A-Z]{3}[a-z][A-Z]{3}\b' 

これは、それが完全な単語である場合は掲載内容に一致します。

r'(?<![^A-Z])[A-Z]{3}[a-z][A-Z]{3}(?![A-Z])' 

これは、先行していないか、別の大文字が続いていない限り、投稿した内容と一致します。

+0

編集をお詫び申し上げます。それは私を悩ましていた=) – katrielalex

+0

ハァ、問題ありません。私は非常に頻繁に間違った近似同音異義語を入力し、それは私も(気づいたとき)気になります。 – agf

+1

これはすべてのUnicodeの大文字と一致しないことに注意してください。たとえば、 'u"と一致しません。Ů "' – Flimm

2

ここにある:

'[A-Z]{3}[a-z]{1}[A-Z]{3}' 

編集 あなたはまた、ワード境界を使用する必要があります。

r'\b[A-Z]{3}[a-z]{1}[A-Z]{3}\b' 
+3

これは彼の反例「ASDFgHJK」と一致します。また、 '{1}'は不要です。 – agf

+0

これはASDFgHJKと一致します。この例のように私はそれを必要としません。助けてくれてありがとう。 – Nitish

+1

これはすべてのUnicodeの大文字と一致しないことに注意してください。たとえば、 'u"と一致しません。Ů "' – Flimm

-1
>>> import re 
>>> pattern = r'^[A-Z]{3}[a-z]{1}[A-z]' 
>>> re.match(pattern , "ABCaABC").start() 
    0 
>>> print re.match(pattern , "ABCABC") 
    None 
>>> print re.match(pattern , "ABCAABC") 
    None 
>>> print re.match(pattern , "ABCAaABC") 
    None 
>>> print re.match(pattern , "ASDFgHJK") 
    None 
>>> print re.match(pattern , "ABCaABC") 
    <_sre.SRE_Match object at 0x011ECF70> 

r'^[A-Z]{3}[a-z]{1}[A-z]'
^ - >資本で始め、その最初の三の文字が資本でなければなりません。

+1

'{1}'は必要ありません。小文字を欲し、__exactly__手紙。 – agf

+1

これはすべてのUnicodeの大文字と一致しないことに注意してください。たとえば、 'u"と一致しません。 – Flimm

0
re.findall(r'[a-z][A-Z]{3}([a-z])[A-Z]{3}[a-z]', data) 
+3

このコードは質問に答えるかもしれませんが、それを使用する。コードのみの回答は長期的には有用ではありません。 – Bono

+0

reはこれに来る他の人のためのregexですので、reをインポートする必要があります –

+0

これはすべてのUnicode大文字と一致しないことに注意してください。たとえば、 'u"と一致しませんŮ "' – Flimm

関連する問題