当前位置: 首页 > wzjs >正文

网站建设费做什么会计科目诸暨企业网站建设

网站建设费做什么会计科目,诸暨企业网站建设,百度怎样免费发布信息,投稿网站源码文章目录 1. 正则表达式基础1.1 常用元字符1.2 基本用法 2. 正则表达式高级功能2.1 分组捕获2.2 命名分组2.3 非贪婪匹配2.4 零宽断言2.5 编译正则表达式2.6 转义字符 3. 常见应用场景3.1 验证邮箱格式3.2 提取 URL3.3 提取日期3.4 提取HTML中的链接3.5 提取HTML中的图片链接3.…

文章目录

    • 1. 正则表达式基础
      • 1.1 常用元字符
      • 1.2 基本用法
    • 2. 正则表达式高级功能
      • 2.1 分组捕获
      • 2.2 命名分组
      • 2.3 非贪婪匹配
      • 2.4 零宽断言
      • 2.5 编译正则表达式
      • 2.6 转义字符
    • 3. 常见应用场景
      • 3.1 验证邮箱格式
      • 3.2 提取 URL
      • 3.3 提取日期
      • 3.4 提取HTML中的链接
      • 3.5 提取HTML中的图片链接
      • 3.6 提取JSON中的特定字段
    • 4. 总结

在Python爬虫中, 正则表达式Regular Expression,简称Regex)是一种强大的工具,用于从文本中提取、匹配和替换特定的字符串模式。正则表达式可以帮助我们从HTML、JSON等格式的文本中提取所需的数据。

1. 正则表达式基础

1.1 常用元字符

正则表达式由一系列字符和特殊符号组成,用于定义匹配模式。以下是一些常用的正则表达式元字符:

  • . 匹配任意字符(除了换行符 \n)
  • ^ 匹配字符串的开头
  • $ 匹配字符串的结尾
  • * 匹配前面的字符 0 次或多次
  • + 匹配前面的字符 1 次或多次
  • ? 匹配前面的字符 0 次或 1 次
  • {n} 匹配前面的字符恰好 n 次
  • {n,} 匹配前面的字符至少 n 次
  • {n,m} 匹配前面的字符至少 n 次,至多 m 次
  • \d 匹配数字(等价于 [0-9])
  • \D 匹配非数字(等价于 [^0-9])
  • \w 匹配字母、数字或下划线(等价于 [a-zA-Z0-9_])
  • \W 匹配非字母、数字或下划线
  • \s 匹配空白字符(空格、制表符、换行符等)
  • \S 匹配非空白字符
  • [...] 匹配括号内的任意一个字符
  • [^...] 匹配不在括号内的任意一个字符

1.2 基本用法

Python提供了re模块来支持正则表达式的操作。以下是re模块中常用的函数:

  • re.search(pattern, string):在字符串中搜索匹配正则表达式的第一个位置,返回一个匹配对象。如果没有匹配项,返回None。
  • re.match(pattern, string):从字符串的开头开始匹配正则表达式,返回一个匹配对象。如果没有匹配项,返回None。
  • re.findall(pattern, string):返回字符串中所有匹配正则表达式的子串,返回一个列表。
  • re.sub(pattern, repl, string):将字符串中所有匹配正则表达式的子串替换为repl,返回替换后的字符串。
  • re.compile(pattern):将正则表达式编译为一个正则表达式对象,可以重复使用。

Python 的 re 模块使用样例如下:

import re# re.match()
result = re.match(r'hello', 'hello world')
if result:print("匹配成功:", result.group())  # 输出: 匹配成功: hello
else:print("匹配失败")# re.search()
result = re.search(r'world', 'hello world')
if result:print("匹配成功:", result.group())  # 输出: 匹配成功: world
else:print("匹配失败")# re.findall()
result = re.findall(r'\d+', '3 apples, 5 bananas, 10 cherries')
print(result)  # 输出: ['3', '5', '10']#re.finditer()
matches = re.finditer(r'\d+', '3 apples, 5 bananas, 10 cherries')
for match in matches:print(match.group())  # 输出: 3, 5, 10# re.sub()
text = '3 apples, 5 bananas, 10 cherries'
result = re.sub(r'\d+', 'X', text)
print(result)  # 输出: X apples, X bananas, X cherries# re.split()
result = re.split(r'\s+', 'hello   world')
print(result)  # 输出: ['hello', 'world']

2. 正则表达式高级功能

2.1 分组捕获

使用 () 可以将匹配的内容分组,并通过 group() 方法获取。

import retext = 'John: 30, Jane: 25'
result = re.search(r'(\w+): (\d+)', text)
if result:print("姓名:", result.group(1))  # 输出: 姓名: Johnprint("年龄:", result.group(2))  # 输出: 年龄: 30

2.2 命名分组

可以为分组命名,方便后续引用。

import retext = 'John: 30'
result = re.search(r'(?P<name>\w+): (?P<age>\d+)', text)
if result:print("姓名:", result.group('name'))  # 输出: 姓名: Johnprint("年龄:", result.group('age'))  # 输出: 年龄: 30

2.3 非贪婪匹配

正则表达式默认是贪婪匹配,即尽可能多地匹配字符。例如,.*会匹配尽可能多的字符。可以使用.*?进行非贪婪匹配。

import retext = '<div>content1</div><div>content2</div>'
result = re.findall(r'<div>(.*?)</div>', text)
print(result)  # 输出: ['content1', 'content2']

2.4 零宽断言

零宽断言用于指定匹配的位置,但不消耗字符。

  • 正向先行断言:(?=…),匹配后面是 … 的位置。
  • 负向先行断言:(?!..),匹配后面不是 … 的位置。
  • 正向后行断言:(?<=…),匹配前面是 … 的位置。
  • 负向后行断言:(?<!..),匹配前面不是 … 的位置。
import re# 匹配后面是数字的字母
result = re.findall(r'\w+(?=\d)', 'apple3 banana5 cherry10')
print(result)  # 输出: ['apple', 'banana', 'cherry']# 匹配前面是数字的字母
result = re.findall(r'(?<=\d)\w+', '3apple 5banana 10cherry')
print(result)  # 输出: ['apple', 'banana', 'cherry']

2.5 编译正则表达式

如果需要多次使用同一个正则表达式,可以将其编译为 re.Pattern 对象,以提高效率。

import repattern = re.compile(r'\d+')
result = pattern.findall('3 apples, 5 bananas, 10 cherries')
print(result)  # 输出: ['3', '5', '10']

2.6 转义字符

在正则表达式中,某些字符(如.、*、?等)具有特殊含义。如果要匹配这些字符本身,需要使用反斜杠\进行转义。例如,.匹配实际的.字符。

3. 常见应用场景

3.1 验证邮箱格式

import redef validate_email(email):pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'return re.match(pattern, email) is not Noneprint(validate_email('test@example.com'))  # 输出: True
print(validate_email('invalid-email'))    # 输出: False

3.2 提取 URL

import retext = 'Visit https://www.example.com or http://example.org'
urls = re.findall(r'https?://[^\s]+', text)
print(urls)  # 输出: ['https://www.example.com', 'http://example.org']

3.3 提取日期

import retext = 'Today is 2023-10-05, and tomorrow is 2023-10-06.'
dates = re.findall(r'\d{4}-\d{2}-\d{2}', text)
print(dates)  # 输出: ['2023-10-05', '2023-10-06']

3.4 提取HTML中的链接

假设我们要从HTML中提取所有的链接,可以使用正则表达式来匹配标签中的href属性。

import rehtml = """
<a href="https://www.example.com">Example</a>
<a href="https://www.google.com">Google</a>
<a href="https://www.python.org">Python</a>
"""# 正则表达式匹配<a>标签中的href属性
pattern = r'<a href="(.*?)">'# 使用re.findall提取所有匹配的链接
links = re.findall(pattern, html)print(links)
# 输出:['https://www.example.com', 'https://www.google.com', 'https://www.python.org']

3.5 提取HTML中的图片链接

假设我们要从HTML中提取所有的图片链接,可以使用正则表达式来匹配标签中的src属性。

import rehtml = """
<img src="https://www.example.com/image1.jpg" alt="Image 1">
<img src="https://www.google.com/logo.png" alt="Google Logo">
<img src="https://www.python.org/python.png" alt="Python Logo">
"""# 正则表达式匹配<img>标签中的src属性
pattern = r'<img src="(.*?)"'# 使用re.findall提取所有匹配的图片链接
image_links = re.findall(pattern, html)print(image_links)
# 输出:['https://www.example.com/image1.jpg', 'https://www.google.com/logo.png', 'https://www.python.org/python.png']

3.6 提取JSON中的特定字段

假设我们有一个JSON字符串,想要提取其中的某个字段,可以使用正则表达式来匹配。

import rejson_data = '{"name": "Alice", "age": 25, "city": "New York"}'# 正则表达式匹配"name"字段的值
pattern = r'"name": "(.*?)"'# 使用re.search提取匹配的字段值
match = re.search(pattern, json_data)if match:print(match.group(1))

4. 总结

正则表达式是处理文本的强大工具,Python 的 re 模块提供了丰富的功能来支持正则表达式的使用。通过掌握基础语法和高级功能,可以轻松应对各种文本处理任务。


文章转载自:

http://AnmF14v4.fwmhz.cn
http://cb4t3bIK.fwmhz.cn
http://CvY2HM8i.fwmhz.cn
http://8kYbzUIj.fwmhz.cn
http://MhSR6epQ.fwmhz.cn
http://1UU9ArKr.fwmhz.cn
http://Pr1R11te.fwmhz.cn
http://F89jHURf.fwmhz.cn
http://roEtNFH9.fwmhz.cn
http://r9kQIFp5.fwmhz.cn
http://FmvNuYLA.fwmhz.cn
http://v0aGZuNm.fwmhz.cn
http://bIyG5mDS.fwmhz.cn
http://jMfWMRfU.fwmhz.cn
http://N9zHjpuJ.fwmhz.cn
http://ePR8VZvJ.fwmhz.cn
http://va5Hihe4.fwmhz.cn
http://onF1Bzox.fwmhz.cn
http://5zE4JXC6.fwmhz.cn
http://dXIuXUb5.fwmhz.cn
http://kQJJlFLQ.fwmhz.cn
http://ffmkzA5k.fwmhz.cn
http://aDZjhBWX.fwmhz.cn
http://KWXivWnk.fwmhz.cn
http://RtNPPX9d.fwmhz.cn
http://fA1HxTlE.fwmhz.cn
http://Eu7ejX2w.fwmhz.cn
http://LL76Rpn7.fwmhz.cn
http://xU3Gt2BI.fwmhz.cn
http://FlxE6evZ.fwmhz.cn
http://www.dtcms.com/wzjs/704614.html

相关文章:

  • 如何在阿里云上建设网站长安汽车网址大全
  • 甘肃网站建站系统平台张家港江阴网站制作
  • 2017民非单位年检那个网站做vivo手机为什么建设网站
  • 一个优秀的网站如何查询网站点击量
  • 郑州企业网站seo外包公司怎么赚钱
  • 没网站做哪个广告联盟网店商品页面制作加工
  • 旅游网站首页设计什么是电子商务网站
  • 网站运营预期效果建设网站案例
  • php网站开发软件语言展会网站制作
  • 个人电脑做外网网站手机浏览器下载大全免费下载
  • 发布网站后备案成都百度关键词排名
  • 阜阳微网站建设多少钱品牌推广渠道
  • gta手机网站大全网站速成
  • wordpress重新安装优化外包哪里好
  • 个人可以做社区网站html电影网页设计实例代码
  • wordpress改为邮箱验证注册廊坊seo网络推广
  • 海鲜网站模板保定网站建设方案优化
  • 做外汇关注的网站网页设计面试常见问题
  • 自己写的网站如何添加 cnzz统计高速wordpress优化
  • 汕头龙湖网站建设二级域名备案
  • 云恒网站建设公司做白酒用哪个分类信息网站
  • 网站建设 运维 管理包括哪些新闻资讯型网站开发
  • 中国最大型网站精致的网站
  • 电商网站开发制作汕头网站建设制作报价
  • 做网站必须有主机吗上海建网站哪家好
  • 学生版 建设网站软件下载保障网装修平台
  • 企业网站php开源系统网站后台批量上传图片
  • 网站不可以做哪些东西WordPress多站点绑定域名
  • 企业网站seo诊断广告赚钱
  • 徐州泉山区建设局网站wordpress 文章之显示标题