Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python正则表达式:(\w+;)不拾取2位数或更少的数字_Python_Regex - Fatal编程技术网

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

Python正则表达式:(\w+;)不拾取2位数或更少的数字,python,regex,Python,Regex,我试图使用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 = m

我试图使用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来自原始输入()。我运行了我的代码,下面是每个输入的结果

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

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

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

示例在Python 3中测试:

>>> print(re.search(r'(\w+)\s+(\w+)\s+(\w+)',input('? ')).group(1))
? 1 2 3
1

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

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

示例在Python 3中测试:

>>> print(re.search(r'(\w+)\s+(\w+)\s+(\w+)',input('? ')).group(1))
? 1 2 3
1
思想\w匹配任何字母、数字或下划线

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

123

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

您的模式正在查找任意字母数字或下划线,3次或更多

思想\w匹配任何字母、数字或下划线

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

123

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


您的模式正在查找任意字母数字或下划线,3倍或更多

字符串中有空格,但正则表达式中没有空格。您的正则表达式现在将只匹配由3个或更多字符组成的单词。请尝试
(\w+)\s+(\w+)\s+(\w+)
您很好,谢谢!我忘了需要匹配空格(我想我是在考虑C语言中的扫描器)。另外,match.group(0)返回我键入的整个字符串,而math.group(1)返回第一个分组。匹配分组是否没有零索引?Anna,没有。这与regex替换文本中的反向引用(
\1
\2
,…)的符号一致。另请参见-
\g
引用整个匹配字符串,就像
匹配.group(0)
一样。字符串中有空格,但正则表达式中没有空格。您的正则表达式现在将只匹配由3个或更多字符组成的单词。请尝试
(\w+)\s+(\w+)\s+(\w+)
您很好,谢谢!我忘了需要匹配空格(我想我是在考虑C语言中的扫描器)。另外,match.group(0)返回我键入的整个字符串,而math.group(1)返回第一个分组。匹配分组是否没有零索引?Anna,没有。这与正则表达式替换文本中的反引用符号(
\1
\2
,…)一致。另请参见-
\g
引用整个匹配字符串,就像
match.group(0)
一样。