[英]Regex to find alphanumeric patterns in a string
我有正則表達式可以在字符串中找到長度為 6 的字母數字。 字符串如下所示:
PLT\n\nTRAVELLER NAME LIST\n\n TRAVELLER RECLOC COMPANY\n 1 TESTNUMBERFIVEQA/TESTN WL9795\n 2 TESTNUMBERONEYQWA/TEST RHFQCD\n 3 TESTNUMBERONEYQWAZZZ/T 1QZ1JF\n 4 TESTNUMBERONEYQWAZZZM/ N3BZW8\n 5 TESTNUMBERONEYQWAZZZMK 05RXPM\n 6 TESTNUMBERONEYQWAZZZMK 2XR9ZR\n 7 TESTNUMBERTHREEZZZ/TES 0Q14S4\n 8 TESTNUMBERTHREEZZZM/TE LRRKW3\n 9 TESTNUMBERTHREEZZZMK/T 949Z4T\n 10 TESTNUMBERTHREEZZZMKJ/ 51WFM2\n 11 TESTNUMBERTWOZZA/TESTN PRGWVT\n 12 TESTNUMBERTWOZZAZZZ/TE SM0BHS\n 13 TESTNUMBERTWOZZAZZZM/T QRJLH1\n 14 TESTNUMBERTWOZZAZZZMK/ R69NHV\n 15 TESTNUMBERTWOZZAZZZMKJ 67XKF7\n 16 TESTNUMBERTWOZZAZZZMKJ 68PV7P\n 17 TESTNUMBERTWOZZAZZZMKJ GCZZ0C\n)> 18 TESTNUMBERTWOZZAZZZMKJ MLMS3L\n 19 TESTNUMBERTWOZZAZZZMKJ 3R1S49\n 20 TESTNUMBERTWOZZAZZZMKJ WB700R\n 21 TESTNUMBERTWOZZAZZZMKJ 718KRC\n 22 TESTNUMBERTWOZZAZZZMKJ RTQH2H\n 23 TESTNUMBERTWOZZAZZZMKJ N2FLM6\n 24 TESTNUMBERTWOZZAZZZMKJ 40M1FR\n 25 TESTNUMBERTWOZZAZZZMKJ 71D3HF\n 26
我試過的正則表達式是這樣的:
for k in mainString:
m = re.match('([0-9A-Z]{6})', k)
if (m):
do something
但它沒有按預期工作。 有人可以指出我可能犯的錯誤嗎? 我正在尋找的模式類似於 WL9795、RHFQCD 等。
謝謝
match
方法僅檢查字符串開頭的匹配項。
請改用search
方法!
此外, ()
是不必要的。
如果代碼中的mainString
實際上是問題頂部的字符串,那么代碼將無法正常工作,因為for
循環將遍歷該字符串中的所有單個字符。
相反,你可以使用
m = re.search(r'\b[0-9A-Z]{6}\b', mainString)
if (m):
print(m.group())
正則表達式之前的r
確保\\b
不被視為字符串轉義序列。
\\b
表示單詞邊界,並確保6個字符的字母數字不在單詞字符之前或之后。 沒有他們,第一場比賽將是"TRAVELLER"
的"TRAVEL"
"TRAVELLER"
。
如果您想獲得所有匹配的列表,請使用findall
或finditer
而不是search
。
for m in re.finditer(r'\b[0-9A-Z]{6}\b', mainString):
print(m.group())
在我看來,你可能想要一些單詞邊界:
>>> print re.findall(r'\b\w{6}\b',s)
['RECLOC', 'WL9795', 'RHFQCD', '1QZ1JF', 'N3BZW8', '05RXPM', '2XR9ZR', '0Q14S4', 'LRRKW3', '949Z4T', '51WFM2', 'PRGWVT', 'SM0BHS', 'QRJLH1', 'R69NHV', '67XKF7', '68PV7P', 'GCZZ0C', 'MLMS3L', '3R1S49', 'WB700R', '718KRC', 'RTQH2H', 'N2FLM6', '40M1FR', '71D3HF']
此正則表達式匹配字母數字模式,這些模式完全是字符長。 換句話說,它不匹配任何"foobarbaz"
,但它將匹配foobar
從"foobar."
有人可以找到以下代碼模式的邏輯 mLT6]arhiu, WpS3:dztlo, WBv1|inagu, Pmf6&spwqd
問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.