匹配数字和字母但非仅数字的正则表达式
我有一个这样的字符串:
S3UPLOAD:Uploading file: /var/mobile/Applications/999445D0-5B4D-4078-9B81-4F65D3474971/Documents/2014-08-25 Driving 22.58.39/2014-08-25 Driving 22.58.39.vmd.zip 783:00
我想找一个正则表达式,只能匹配像 S3UPLOAD:
这样的子字符串,而不能匹配 783:
。这些子字符串可以包含大写字母和数字,或者仅包含大写字母,但不能只有数字。
我试过这个表达式。
/[A-Z][A-Z0-9]+:/
但是它不太有效,因为它也会匹配到 783:
这个子字符串。
3 个回答
0
像这样
/([A-Z]*[0-9]*[A-Z]+)+/
1
这个规则只允许大写字母,并且可以和数字混合。但是必须至少包含一个大写字母。
[A-Z0-9]*[A-Z][A-Z0-9]*:
1
你可以试试下面这个正则表达式,它可以找到那些包含大写字母和数字的子串,或者只包含大写字母的子串,但不会匹配只有数字的情况。
[A-Z0-9]*[A-Z][0-9][A-Z0-9]*:|[A-Z]+:
>>> import re
>>> s = "S3UPLOAD:Uploading file: /var/mobile/Applications/999445D0-5B4D-4078-9B81-4F65D3474971/Documents/2014-08-25 Driving 22.58.39/2014-08-25 Driving 22.58.39.vmd.zip 783:00"
>>> m = re.search(r'[A-Z0-9]*[A-Z][0-9][A-Z0-9]*:|[A-Z]+:', s).group()
>>> m
'S3UPLOAD:'