匹配数字和字母但非仅数字的正则表达式

0 投票
3 回答
1474 浏览
提问于 2025-04-20 00:30

我有一个这样的字符串:

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:'

撰写回答