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 ^
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
import re
pattern = re.compile("^([A-Z][0-9]+)+$")
pattern.match(string)
Method 2
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
Method 3
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())
Method 4
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'
Method 5
import re
ab = re.compile("^([A-Z]{1}[0-9]{1})+$")
ab.match(string)
I believe that should work for an uppercase, number pattern.
Method 6
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
Method 7
As stated in the comments, all these answers using re.match implicitly matches on the start of the string. re.search is needed if you want to generalize to the whole string.
import re
pattern = re.compile("([A-Z][0-9]+)+")
# finds match anywhere in string
bool(re.search(pattern, 'aA1A1')) # True
# matches on start of string, even though pattern does not have ^ constraint
bool(re.match(pattern, 'aA1A1')) # False
Credit: @LondonRob and @conradkleinespel in the comments.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0