Python正则表达式:(\ w +)没有拿起2位数或更少的数字

时间:2018-02-09 17:14:14

标签: python regex

我正在尝试使用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匹配任何字母,数字或下划线,并且通过包含+我将在我的组中获得它的一个或多个实例。

2 个答案:

答案 0 :(得分:4)

\w与数字之间的空格不匹配 - 正如您正确指出的那样,\w匹配字母,数字或下划线,但不匹配空格。尝试:

match = re.search(r'(\w+)\s+(\w+)\s+(\w+)', inputStr)

\s+匹配数字组之间的一个或多个空白字符。

在Python 3中测试的

示例

>>> 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次或更多