re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 None。
函数语法:
re.match(pattern, string, flags=0)
几个常见的正则表达式模式
^:
匹配字符串的开始位置。例如,^hello会匹配以"hello"开头的字符串。
$:
匹配字符串的结束位置。例如,world$会匹配以"world"结尾的字符串。
.:
匹配除换行符以外的任意字符。例如,a.b会匹配"a+b"、“a@b"等。
*:
匹配前面的模式零次或多次。例如,a*b会匹配"b”、“ab”、“aab"等。
+:
匹配前面的模式一次或多次。例如,a+b会匹配"ab”、“aab”、“aaab"等。
?:
匹配前面的模式零次或一次。例如,a?b会匹配"b”、“ab”。
[]:
定义字符集合。例如,[abc]会匹配"a"、“b”、“c"中的任意一个字符。
[^]:
否定字符集合。例如,[^abc]会匹配除了"a”、“b”、“c"之外的任意字符。
`\d:`匹配数字。等价于[0-9]。
`\w:`匹配字母、数字或下划线。等价于[A-Za-z0-9_]。
`\s:`匹配空白字符,包括空格、制表符、换行符等。
\b:`匹配单词边界。例如,\btest\b会匹配单独的单词"test”。
patients[‘conditions’].str.contains
(r’\bDIAB1’) 是一个条件表达式,用于筛选出符合条件的记录。其中 patients[‘conditions’] 表示取出 patients 表中的 conditions 列,str.contains(pattern) 方法用于检查每个记录中的 conditions 字符串是否包含指定的模式 pattern。
data = [[1, 'Winston', 'winston@leetcode.com'], [2, 'Jonathan', 'jonathanisgreat'], [3, 'Annabelle', 'bella-@leetcode.com'], [4, 'Sally', 'sally.come@leetcode.com'], [5, 'Marwan', 'quarz#2020@leetcode.com'], [6, 'David', 'david69@gmail.com'], [7, 'Shapiro', '.shapo@leetcode.com']]
users = pd.DataFrame(data, columns=['user_id', 'name', 'mail']).astype({'user_id':'int64', 'name':'object', 'mail':'object'})
users
查找 前缀 名称是一个字符串,可以包含字母(大写或小写),数字,下划线 ‘_’ ,点 ‘.’ 和/或破折号 ‘-’ 。前缀名称 必须 以字母开头。 域 为 ‘@leetcode.com’ 。
user_id name mail
0 1 Winston winston@leetcode.com
1 2 Jonathan jonathanisgreat
2 3 Annabelle bella-@leetcode.com
3 4 Sally sally.come@leetcode.com
4 5 Marwan quarz#2020@leetcode.com
5 6 David david69@gmail.com
6 7 Shapiro .shapo@leetcode.com
valid_emails = users[users['mail'].str.match(r'^[A-Za-z][\w.-]*@leetcode\.com$')]
user_id name mail
0 1 Winston winston@leetcode.com
2 3 Annabelle bella-@leetcode.com
3 4 Sally sally.come@leetcode.com