繁体   English   中英

Python正则表达式:(\\ w +)不使用2位数或更少的数字

[英]Python Regex: (\w+) not picking up up numbers with 2 digits or less

我正在尝试使用python的正则表达式来识别来自用户的3个令牌,这些令牌都可以由字母或数字组成。

这是我正在使用的代码:

    match = re.search(r'(\w+)(\w+)(\w+)', inputStr)
    if not match:
        print("Not valid")
    else:
        numWord1 = match.group(0)
        numword2 = match.group(1)
        numWord3 = match.group(2)

    print(num1)

其中inputStr来自raw_input()。 我运行了代码,这是每次输入所得到的

      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

我以为\\ w可以匹配任何字母,数字或下划线,并且通过包含+,我可以在我的组中获得1个或多个它的实例。

\\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

认为\\ w匹配任何字母,数字或下划线

是的,但是\\w与空格不匹配,例如。

1 2 3

r'(\\w+)(\\w+)(\\w+)'

您的格式正在寻找3次或以上的任何字母数字或下划线

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM