正则表达式实现添加、删除、替换三种功能

最近呢,公司让写一个组件,要求用正则表达式构建一个中文的匹配组件,许多问题就来了,大多是用自动机来构建一个正则表达式的引擎,小编虽然大学的时候学过编译原理,可奈何现在已经忘得差不多了,只能通过现有的正则表达式来进行功能实现。

下面的代码呢实现了通过用正则表达式来对某一个句子的添加、替换、删除三种操作,不知道这个适不适合大家的口味,反正小编已经做好让公司头批评的准备了,因此小编是在是现学不来呀。

# -*- conding:utf-8 -*-
import re
txt = '这个池子的体积大约是34立方米容积'
'''role为匹配规则,re_out为替换部分格式为“\1(替换部分)”'''
def Replace(role,re_out):
 out = re.compile(role)
 String_out = out.sub(re_out,txt)
 print(String_out)
Replace(r'(这个池子的体积大约是34)(.*)',r'\1平方米')
'''
role为匹配规则,num为将要删除的元素(从1开始)
'''
def Delete(role,num):
 out = re.search(role,txt).group(num)
 string = txt.split(out)
 String_out = ''.join(string)
 print(String_out)
Delete('(这个池子的体积大约是34)(.*)(容积)',2)
def Add(role,re_out):
 out = re.compile(role)
 String_out = out.sub(re_out,txt)
 print(String_out)
Add(r'(这个池子的体积大约是34)(.{0})',r'\1的')

下面的图片是小编运行这三个函数得到的结果,大家可以看看,如果有需要的可以参考一下,另外,小编需要人告诉我这个正则表达式如何用自动机来实现,他的原理是什么,欢迎大家的留言哦。

总结

以上所述是小编给大家介绍的正则表达式实现添加、删除、替换三种功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHotel_北京富豪华宾馆.jpg"这样的格式都修改为"./uploads/110100cityHotel北京富豪华宾馆.jpg"这样的格式.我本人是没有这样处理过数据的,但是我知道mysql是可以使用replace做到的,而且正则表达式也可以做到. 如何做呢?

  • SQL Server中利用正则表达式替换字符串的方法

    建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255), --替换模板 @replacestr VARCHAR

  • 通过正则表达式删除空行的方法

    我们的目标是要删除文本中的空行,可能一行也可能是多行. 所以,我的操作如下: 在此,我们匹配空行用的是 (\r\n)* 这样,就可以匹配多个空行,同时用null来替代,就可以实现删除空行.此方案是基于对\r和\n的使用. 以前在网上看到一种实现是: \n[\s| ]*\r 匹配之后,用null替代,也可以实现删除空行,效果如下图: 两种方案都能实现相同的效果. 如果有其他的不同理解,请发表评论,大家共同进步. 我又做了以下测试,如下图: 仅用了 \n\r 就完全实现了删除所有的空行,因为在每一个

  • Javascript 正则表达式实现为数字添加千位分隔符

    最近在网上有看到使用js来实现数字的千位分隔符的面试(笔试)题,所以就自己写了一个利用"正则+replace"来实现的方法: 复制代码 代码如下: var thousandBitSeparator = function(numStr){      var b = /([-+]?\d{3})(?=\d)/g;      return numStr.replace(b, function($0, $1){          return $1 + ',';      });  } 支持正负

  • 使用 js+正则表达式为关键词添加链接

    要求把一段html脚本中的疾病名添加到疾病库的链接,只添加一次,要避开超链接或图片链接. 最初是用的    str.replace('糖尿病', '<a href=...>糖尿病</a>'); 结果找了半天,愣是没找到替换后的效果,原来是有个图片的title中包含糖尿病,被它捷足先登了. 因此要把<a>链接.<img>标签避开,但<p><div>等标签不用避开 上图: 复制代码 代码如下: s = "<a href='

  • 删除javascript中注释语句的正则表达式

    复制代码 代码如下: function removeJsComments(code)   {         return code.replace(/(?:^|\n|\r)\s*\/\*[\s\S]*?\*\/\s*(?:\r|\n|$)/g, '\n').replace(/(?:^|\n|\r)\s*\/\/.*(?:\r|\n|$)/g, '\n');  } 多行注释: 复制代码 代码如下: /(?:^|\n|\r)\s*\/\*[\s\S]*?\*\/\s*(?:\r|\n|$)/g 单

  • asp.net正则表达式删除指定的HTML标签的代码

    如果全盘删除里面的 HTML 标签,可能会造成阅读上的困难(比如 a, img 这些标签), 最好是删除一部分,保留一部分. 正则表达式里,判断 包含某些字符串 是非常容易理解的,但是如何判断 不包含某些字符串 (是字符串,不是字符,是某些,不是某个) 确实是个费解的事. 复制代码 代码如下: <(?!((/?\s?li)|(/?\s?ul)|(/?\s?a)|(/?\s?img)|(/?\s?br)|(/?\s?span)|(/?\s?b)))[^>]+> 这个正则是判断HTML标签不

  • Python使用正则表达式实现文本替换的方法

    本文实例讲述了Python使用正则表达式实现文本替换的方法.分享给大家供大家参考,具体如下: 2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: ① 如果不是在某个文件夹里面则将文件夹名称插入前面 ② 所有的文件名名称加上一个前缀 直接看代码吧: # encoding: UTF-8 import re # 将正则表达式编译成Pattern对象 p = re.compi

  • Java基于正则表达式实现的替换匹配文本功能【经典实例】

    本文实例讲述了Java基于正则表达式实现的替换匹配文本功能.分享给大家供大家参考,具体如下: package replaceDemo; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank * 替换匹配的文本 */ public class ReplaceDemo { public static void main(String[] args) { // 创建一个正则表达式模式

  • javascript中使用正则表达式实现删除字符串中的前后空格

    实例 复制代码 代码如下: <script> var str=" yexj00 "; str=str.replace(/^s*|s*$/g,''); alert(str); </script> 实例 模仿RTrim: 复制代码 代码如下: <script> var str="yexj00 "; str=str.replace(/s*$/g,''); alert(str); </script> 实例 代码以及测试代码如下

  • javascript中使用正则表达式删除前后空格的方法

    去掉首位空格 复制代码 代码如下: str=str.replace(/^\s+|\s+$/g,''); js正则表达式删除字符串前后空格 String.prototype.trim=function(){ var reSpace=/^\s*(.*?)\s*$/; return this.replace(reSpace,"$1″); }; 让我们分析一下第二行的正则表达式 ^ 行开始 \s* 匹配字符前面的所有空格,贪婪模式重复 (.*?) 捕获组,勉强模式重复匹配任意字符,也就是我们最终需要(去

随机推荐