python3 正则表达式如何实现中文模糊匹配替换并输出

python3 正则表达式如何实现中文模糊匹配替换并输出,第1张

要使用正则表达式实现中文模糊匹配替换并输出,你可以使用 Python 的 re 模块。以下是一个示例代码,读取一个名为 inputtxt 的文件,将其中的 "竹某婵" 或 "竹婵某" 替换为 "竹婵婵",然后将结果保存到一个名为 outputtxt 的新文件中:

import re

# 定义一个函数来实现替换 *** 作

def replace_pattern(match_obj):

return "竹婵婵"

# 读取文件内容

with open("inputtxt", "r", encoding="utf-8") as file:

content = fileread()

# 使用正则表达式进行模糊匹配替换

pattern = r"竹(:某|婵)(:婵|某)"

replaced_content = resub(pattern, replace_pattern, content)

# 将替换后的内容写入新的文件

with open("outputtxt", "w", encoding="utf-8") as file:

filewrite(replaced_content)

在这个例子中,正则表达式 r"竹(:某|婵)(:婵|某)" 用于匹配 "竹某婵" 或 "竹婵某"。(:) 是一个非捕获组,它表示匹配其中的任意一个字符,但不会捕获该组。这里的组分别包含 "某" 和 "婵",因此可以匹配 "竹某婵" 或 "竹婵某"。接下来,resub 函数用于替换匹配到的字符串。这里我们提供了一个替换函数 replace_pattern,它直接返回 "竹婵婵"。最后,将替换后的内容写入一个名为 outputtxt 的新文件。

…………

回复:

如果要实现匹配任意特定中文字符,可以使用 Unicode 的中文字符范围。以下是修改后的示例代码,可以将 "竹某婵" 或 "竹婵某" 替换为 "竹婵婵",其中 "某" 为任意中文字符:

import re

# 定义一个函数来实现替换 *** 作

def replace_pattern(match_obj):

return "竹婵婵"

# 读取文件内容

with open("inputtxt", "r", encoding="utf-8") as file:

content = fileread()

# 使用正则表达式进行模糊匹配替换

pattern = r"竹[\u4e00-\u9fa5]婵|竹婵[\u4e00-\u9fa5]"

replaced_content = resub(pattern, replace_pattern, content)

# 将替换后的内容写入新的文件

with open("outputtxt", "w", encoding="utf-8") as file:

filewrite(replaced_content)

在这个例子中,正则表达式 r"竹[\u4e00-\u9fa5]婵|竹婵[\u4e00-\u9fa5]" 用于匹配 "竹某婵" 或 "竹婵某",其中 "某" 为任意中文字符。[\u4e00-\u9fa5] 用于匹配任意一个中文字符。接下来,resub 函数用于替换匹配到的字符串。这里我们提供了一个替换函数 replace_pattern,它直接返回 "竹婵婵"。最后,将替换后的内容写入一个名为 outputtxt 的新文件。

什么是request对象

Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。

request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

在JS中获取到request,网页地址的方法:

windowlocationhref

这里假设URL完整为:baiducom/indexhtmltest=233333

这里要取request中值的属性,可以使用正则表达式获取

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

首先使用RegExp构造一个正则正则表达式对象

var reg = new RegExp("(^|/|&)test=([^&])(&|$)", "i");

参数

pattern             一个字符串,指定了正则表达式的模式或其他正则表达式。

attributes          可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

修饰符

i    执行对大小写不敏感的匹配。  

g    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。  

m    执行多行匹配。  

然后使用match匹配出结果来

var match= windowlocationhrefmatch(reg);

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

参数

searchvalue    规定要检索的字符串值。  

regexp            规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。  

取出结果

match[2]

返回:233333

将它封装为一个函数

function getRequestValue(name) { 

var reg = new RegExp("(^|/|&)" + name + "=([^&])(&|$)", "i"); 

var match= windowlocationhrefmatch(reg); 

return match&&match[2]||null;

}

完整实例代码:

<html>

<head>

<title></title>

</head>

<body>

</body>

<script type="text/javascript">

function getValue(name) { 

var reg = new RegExp("(^|/|&)" + name + "=([^&])(&|$)", "i"); 

var match= windowlocationhrefmatch(reg); 

return match&&match[2]||null;

}

consolelog(getValue('test'));

</script>

</html>

Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配 *** 作。

在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具 ,下面总结了 re 模块的常用方法。

d 匹配所有的十进制数字 0-9

D 匹配所有的非数字,包含下划线

s 匹配所有空白字符(空格、TAB等)

S 匹配所有非空白字符,包含下划线

w 匹配所有字母、汉字、数字 a-z A-Z 0-9

W 匹配所有非字母、汉字、数字,包含下划线

备注:符号 贪婪,符号 非贪婪

[abc]:能匹配其中的单个字符

[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)

[2-9] [1-3]:能够做组合匹配

4{ }:用于标记前面的字符出现的频率,有如下情况:

{n,m}:代表前面字符最少出现n次,最多出现m次

{n,}:代表前面字符最少出现n次,最多不受限制

{,m}:代表前面字符最多出现n次,最少不受限制

{n}:前面的字符必须出现n次

字符串中有反斜杠的,需要对反斜杠做转义

():分组字符,可以为匹配到的内容分组,快速获取到分组中的数据 在正则里面 "()" 代表的是分组的意思,一个括号代表一个分组,你只能匹配到 "()" 中的内容。

group:用于查看指定分组匹配到的内容

groups:返回一个元组,组内为所有匹配到的内容

groupdict:返回一个字典,包含分组的键值对,需要为分组命名

作用:可以将字符串匹配正则表达式的部分割开并返回一个列表

flags定义包括:

reI:忽略大小写

reL:表示特殊字符集 w, W, b, B, s, S 依赖于当前环境

reM:多行模式

reS:’’并且包括换行符在内的任意字符(注意:’’不包括换行符)

reU:表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库

在 Python 中使用正则表达式之前,先使用以下命令导入 re 模块

例如:

‘(d)(a)1’ 表示:匹配第一是数字,第二是字符a,第三 1 必须匹配第一个一样的数字重复一次,也就是被引用一次。

如 “9a9” 被匹配,但 “9a8” 不会被匹配,因为第三位的 1 必须是 9 才可以。

‘(d)(a)2’ 表示:匹配第一个是一个数字,第二个是a,第三个 2 必须是第二组()中匹配一样的。

如 “8aa” 被匹配,但 “8ab”,“7a7” 不会被匹配,第三位必须是第二组字符的复制版,也是就引用第二组正则的匹配内容。

你的python正则表达式缺少行首标识符^和行尾标识符$,这样才能知道匹配到什么位置为止,所以加上^和$才能让匹配出687471686,完整的Python3程序如下

#!/usr/bin/python3

 

import re

 

a = '//mmtaobaocom/self/model_cardhtmuser_id=687471686'

ids = recompile('^\user_id=()$')findall(a)

print (ids)

运行结果

['687471686']

pythonre字符串为特定字符和数字组成

我们讲一下字符串类型和数字类型,这两个Python中基本数据类型之间的转换。也就是说字符串类型可以转为数字类型,数字类型也可以转为字符串类型。

数据类型差异

对于不同的数据类型,代码的行为有所不同。如下图所示,图中的print(5 + 10)是数值计算,而print('5' + '10')是字符串连接。

如果将字符串类型和数据类型连接在一起,则会发生错误。

数字类型转换为字符串类型

数字类型转换为字符串类型需要用到str()函数。

str()函数:将对象转化为适于人阅读的形式。返回一个对象的string格式。

语法如下所示:

class str(object='')

object -- 对象

如下图所示,变量num是数字类型,我们使用str()函数将这个数字类型转换成了字符串类型。

字符串类型转换为数字类型

字符串类型转换为数字类型需要用到int() 函数。

int() 函数:用于将一个字符串或数字转换为整型。

语法如下所示:

class int(x, base=10)

x -- 字符串或数字

base -- 进制数,默认十进制

x -- 字符串或数字

base -- 进制数,默认十进制

如下图所示,str1是字符串类型,使用int()函数将这个字符串类型的变量转换成了整型,最后与10相加等于15。

以上就是关于python3 正则表达式如何实现中文模糊匹配替换并输出全部的内容,包括:python3 正则表达式如何实现中文模糊匹配替换并输出、js函数中怎么获取request中值的属性、强烈推荐!Python 这个宝藏库 re 正则匹配等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9713440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存