首页 > 解决方案 > 此代码仅打印单词 student 而不是其后的名称我使用正则表达式相同

问题描述

我已经使用正则表达式模块从以下文本中打印学生姓名,但是在代码中,当我定义我的姓名正则表达式时,它只打印单词 student 我该如何修复它

import re
    list = '''Student name - Shaurya Ronak Ajmera
    Age - 7 years
    Std - 2nd
    Parents name - Ronak and Shital Ajmera
    Phone no - ******************
    Address - ***********
    Knows gujarati - can speak and understand. Reads and writes small sentences.
    Batch - 11 to 12:30 am'''
    numberRegex = re.compile(r'\d{10}')
    nameRegex = re.compile(r'(student)\.*[A-Z a-z]+',re.I)
    mo = nameRegex.findall(list)
    print(mo)
    no = numberRegex.findall(list)
    print(no)

标签: pythonregex

解决方案


您可以重复匹配之后的所有名称student name - 并将该部分捕获到一个组中。

您可以省略 AZ 并将 az 留在字符类中,因为这re.I会使匹配不区分大小写。

student name - ([a-z]+(?: [a-z]+)*)

查看Python 演示

例子

nameRegex = re.compile(r'student name - ([a-z]+(?: [a-z]+)*)', re.I)

推荐阅读