我正在尝试使用python的正则表达式来识别来自用户的3个令牌,这些令牌都可以由字母或数字组成。
以下是我使用的代码:
I typed: 1 2 3
I got: Not valid
I typed: 11 22 33
I got: Not valid
I typed: 111 222 333
I got: 111
I typed: 1 hello 3
I got: hello
I typed: hello 2 3
I got: hello
其中inputStr来自raw_input()。我运行了我的代码,这是我得到的每个输入
{{1}}
我认为\ w匹配任何字母,数字或下划线,并且通过包含+我将在我的组中获得它的一个或多个实例。
答案 0 :(得分:4)
\w
与数字之间的空格不匹配 - 正如您正确指出的那样,\w
匹配字母,数字或下划线,但不匹配空格。尝试:
match = re.search(r'(\w+)\s+(\w+)\s+(\w+)', inputStr)
\s+
匹配数字组之间的一个或多个空白字符。
示例:
>>> print(re.search(r'(\w+)\s+(\w+)\s+(\w+)',input('? ')).group(1))
? 1 2 3
1
答案 1 :(得分:2)
think \ w匹配任何字母,数字或下划线
是,但\w
与空格不匹配,例如。
1 2 3
r'(\w+)(\w+)(\w+)'
您的模式正在寻找任何字母数字或下划线,3次或更多