点个关注
re.match()
re.match()
函数尝试从字符串的开头开始匹配一个模式,如果匹配成功,返回一个匹配成功的对象,否则返回None。大小写区分,内容匹配不到后面的,只能匹配一个,不能有空格(开头匹配)
re.match(pattern, string, flags = 0)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式。如是否区分大小写、是否多行匹配等。
import rea = 'python' b = 'python and java and python' # 大小写区分,内容匹配不到后面的,只能匹配一个,不能有空格(开头匹配) res = re.match(a, b) # 懒惰匹配 print(res) # 提取匹配的内容 print(res.group())
1.正则查找网址
# 输入描述:
# 输入一行字符串表示网址。
# 输出描述:
# 输出网址从开头匹配到第一位不匹配的范围。
# 示例1
# 输入:
# https://www.Nowcoder.com
# 输出:
# (0, 11)import re
a='https://www'
b=str(input())
res=re.match(a,b)
if res:print(res.span())
else:print(None)
import re
a='https://www'
b=str(input())
res=re.match(a,b).span()
print(res)
这种写法有弊端,一旦开头匹配不是,返回None,再.span()那此代码就会抛出异常,,所以修改
span()的作用是使输出以元组形式显示(上图有)
2. 提取数字电话
# 描述 # 牛牛翻看以前记录朋友信息的电话薄,电话号码几位数字之间使用-间隔,后面还接了一下不太清楚什么意思的英文字母,你能使用正则匹配re.sub将除了数字以外的其他字符去掉,提取一个全数字电话号码吗? # 输入描述: # 输入一行字符串,字符包括数字、大小写字母和- # 输出描述: # 输出该字符串提取后的全数字信息。 # 示例1 # 输入: # 2022-063-109NiuMei # 复制 # 输出: # 2022063109
b = re.match('\D', '雨123') # \D只能匹配非数字 print(b) print(b.group())
import re
a=input()
b=re.sub('\D','',a)
print(b)
3.截断电话号码
# 描述
# 牛牛记录电话号码时,习惯间隔几位就加一个-间隔,方便记忆,同时他还会在电话后面接多条#引导的注释信息。拨打电话时,-可以被手机正常识别,#引导的注释信息就必须要去掉了,你能使用正则匹配re.match将前面的数字及-信息提取出来吗,去掉后面的注释信息。
# 输入描述:
# 输入一行字符串,包括数字、大小写字母、#、-及空格。
# 输出描述:
# 输出提取的仅包含数字和-的电话号码。
# 示例1
# 输入:
# 123-3456-789 #NiuMei #1 cool girl
# 复制
# 输出:
# 123-3456-789首先通过 input 函数获取用户输入的字符串。然后使用 re.match 函数,正则表达式模式 [\d-]+ 表示匹配一个或多个数字或 - 字符,从字符串开头开始匹配,匹配到的结果通过 group 方法提取出来,就是我们需要的电话号码部分,去掉了后面的注释信息。
import reinput_str = input("请输入字符串: ")
phone_number = re.match(r'[\d-]+', input_str)if phone_number:print(phone_number.group())
else:print(None)