How do I check if a string matches this pattern?
Uppercase letter, number(s), uppercase letter, number(s)…
Example, These would match:
A1B2 B10L1 C1N200J1
These wouldn’t (‘^’ points to problem)
a1B2 ^ A10B ^ AB400 ^
How do I check if a string matches this pattern?
Uppercase letter, number(s), uppercase letter, number(s)…
Example, These would match:
A1B2 B10L1 C1N200J1
These wouldn’t (‘^’ points to problem)
a1B2 ^ A10B ^ AB400 ^
^([A-Z]\d+){1,}$
like this?B
and not with A
.A
and B
are small letters right? A10b
and aB400
?import re pattern = re.compile("^([A-Z][0-9]+)+$") pattern.match(string)
Edit: As noted in the comments match
checks only for matches at the beginning of the string while re.search()
will match a pattern anywhere in string. (See also: https://docs.python.org/library/re.html#search-vs-match)
One-liner: re.match(r"pattern", string) # No need to compile
import re >>> if re.match(r"hello[0-9]+", 'hello1'): ... print('Yes') ... Yes
You can evalute it as bool
if needed
>>> bool(re.match(r"hello[0-9]+", 'hello1')) True
Please try the following:
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())
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'
import re
ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
I believe that should work for an uppercase, number pattern.
regular expressions make this easy …
[A-Z]
will match exactly one character between A and Z
\d+
will match one or more digits
()
group things (and also return things… but for now just think of them grouping)
+
selects 1 or more