437

文字列がこのパターンに一致するかどうかを確認するにはどうすればよいですか?

大文字、数字、大文字、数字...

例、これらは一致します:

A1B2
B10L1
C1N200J1

これらはそうではありません(「^」は問題を示しています)

a1B2
^
A10B
   ^
AB400
^
4

7 に答える 7

584
import re
pattern = re.compile("^([A-Z][0-9]+)+$")
pattern.match(string)
于 2012-09-26T05:30:57.923 に答える
283

一発ギャグ:re.match(r"pattern", string) # No need to compile

import re
>>> if re.match(r"hello[0-9]+", 'hello1'):
...     print('Yes')
... 
Yes

bool必要に応じて評価できます

>>> bool(re.match(r"hello[0-9]+", 'hello1'))
True
于 2016-07-13T03:09:26.930 に答える
48

次のことを試してください。

import re

name = ["A1B1", "djdd", "B2C4", "C2H2", "jdoi","1A4V"]

# Match names.
for element in name:
     m = re.match("(^[A-Z]\d[A-Z]\d)", element)
     if m:
        print(m.groups())
于 2015-02-12T10:36:25.747 に答える
30
import re
import sys

prog = re.compile('([A-Z]\d+)+')

while True:
  line = sys.stdin.readline()
  if not line: break

  if prog.match(line):
    print 'matched'
  else:
    print 'not matched'
于 2012-09-26T05:31:58.760 に答える
11

正規表現はこれを簡単にします...

[A-Z]A と Z の間の正確に 1 文字に一致します

\d+1 つ以上の数字と一致します

()ものをグループ化します (また、ものを返します... しかし、今のところ、それらをグループ化することを考えてください)

+1 つ以上を選択します

于 2012-09-26T05:35:48.250 に答える
11
  
import re

ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
  


大文字の数字パターン で機能するはずです。

于 2012-09-26T06:10:00.217 に答える