Python 3.0中的正则表达式不匹配

时间:2016-12-28 05:09:21

标签: python regex python-3.x

如果字符串为I am Fine,则输出为I

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())

2 个答案:

答案 0 :(得分:1)

您可以使用 findall 方法。

来自Python docs7.2.5.6部分,

findall() matches all occurrences of a pattern, not just the first one as search() does.

在你的情况下,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']

答案 1 :(得分:0)

?指定前面的字符或类可能存在也可能不存在。当re.search开始搜索字符串时,它在字符串的开头找不到该类......由于?,这是可接受的匹配。它只是返回空字符串。

>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''

如果您希望它找到第一个大写字母,请不要使用?

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'