匹配替换指定文本为html标签
最近看了一道前端面试题,是关于正则的,用尽可能低复杂度的函数,匹配替换指定文本为html标签,题目是这样的:
特定语法匹配替换
说明:匹配字符串中形如 =g文字文字= 的语法,并将相应部分转化为对应的标签文字文字
示例:
transform('=g1.18 进入开发='); // <g>1.18 进入开发</g>
transform('=g1.23 联调(-1)=,=g1.25 发布(+1)=');// <g>1.23 联调(-1)</g>,<g>1.25 发布(+1)</g>
transform('1.25 发布'); // 1.25 发布
按照正常情况,我们能瞬间想到以下几种解法:
- 正则分步替换
- indexOf查找替换
以上二者均是分步处理,先匹配=g,替换成<g>,然后匹配=,替换成</g>,这种属于暴力破解。
下面介绍下replace函数,重点是以前忽略掉的一个参数 replacement,
stringObject.replace(regexp/substr,replacement)
基础的用法是这样的:
text = "javascript Tutorial";
text.replace(/javascript/i, "JavaScript");
或者是这样的:
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");
我们这里使用函数式的用法,答案如下:
str.replace(/=g|=/g, (a) => {
return {
'=': '</g>',
'=g': '<g>',
}[a]
})
匹配替换指定文本为html标签的更多相关文章
- XPath匹配含有指定文本的标签---contains的用法
1.标签中只包含文字 <div> <ul id="side-menu"> <li class="active"> <a ...
- perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径
不会读取 影藏文件 main #!/usr/bin/perl use autodie; use utf8; use Encode qw(decode encode); if(@ARGV ne 3){ ...
- 正则PerlRegEx实现的批量替换指定文件中的标签
示例: 一个朋友需要而编写的标签升级更新. 速度超快,1w个文件大概4,5秒,本想加个多线程显示进度,后来想想算了 主要代码: reg.RegEx := '<' + Edit_regular1. ...
- JS利用正则配合replace替换指定字符
替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...
- Jsoup提取文本时保留标签
使用Jsoup来对html进行处理比较方便,你可能会用它来提取文本或清理html标签.如果你想提取文本时保留标签,可以使用Jsoup.clean方法,参数为html及标签白名单: Jsoup.clea ...
- C# 替换Word文本—— 用文档、图片、表格替换文本
编辑文档时,对一些需要修改的字符或段落可以通过查找替换的方式,快速地更改.在C# 在word中查找及替换文本一文中,主要介绍了在Word中以文本替换文本的方法,在本篇文章中,将介绍如何用一篇Word文 ...
- java 解析富文本处理 img 标签
很多项目都需要到富文本来添加内容,就好比新闻啊,旅游景点之类的,都需要使用富文本去添加数据,然而怎么我这边就发现了两个问题 1)怎样将富文本的图片的 src 获取出来? 2)后台上传的时候用的是相对路 ...
- ActiveReports 报表控件V12新特性 -- 文本框和标签控件的浓缩
ActiveReports是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForms / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求 ...
- Js 利用正则表达式和replace函数获取string中所有被匹配到的文本
js的replace函数除了替换文本以外还有获取所有被正则表达式匹配到的文本的功能.这里以一个简单的案例来作为演示. 利用正则查找出所有被两个花括号包裹的字符串: var str = '<div ...
随机推荐
- PHP开发笔记(二)PHP的json_encode和json_decode问题
解决PHP的json_encode问题之前,先了解一下PHP预定义常量http://php.net/manual/zh/json.constants.php. 用PHP的json_encode来处理中 ...
- js原生_获取url键值对
思路: 1.先对url进行处理,获取 ?后的字符串 postid=10457794&actiontip=保存修改成功') 2. 字符串通过&标识,不同参数转为数组 ["pos ...
- 体验:Anko + Kotlin
● 依赖:compile 'org.jetbrains.anko:anko:0.10.0' ● 界面: import android.view.View import org.jetbrains.an ...
- 解决java float double 浮点型参与计算失精度
本人前段时间做一个社区电商应用,发现了一个 天坑 ...................让我哭会 . 下面听听我的踩坑之路吧 ,电商肯定跟¥打交道了,计算少不了的.由于本人太菜 单纯的以为 fl ...
- [ Tools ] [ MobaXterm ] [ SSH ] [ Linux ] export and import saved session
How to export MobaXterm sessions to another computer? https://superuser.com/questions/858973/how-to- ...
- java加密解密算法位运算
一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...
- SPL类
用途:对类,方法,属性,参数的提取生成文档:自动加载插件 实列化类同于new:$ref = new ReflectionClass($classname);$class = $ref->newI ...
- nginx全局查看进程
1. 查看nginx的PID,以常用的80端口为例: [root@rbtnode1 nginx-1.14.2]# netstat -anop | grep 0.0.0.0:80tcp 0 0 0.0. ...
- jmeter出现乱码怎么解决
本文是抄袭安大叔的性能 如果想在性能获得更好的发展 请添加公众号:测试那点事 大叔的群号:435092293 大叔曾经担任百度技术总监 很牛逼 相信大叔知道了不会怪我 毕竟我是你的学 ...
- 序列模型(5)-----双向神经网络(BRNN)和深层循环神经网络(Deep RNN)
一.双向循环神经网络BRNN 采用BRNN原因: 双向RNN,即可以从过去的时间点获取记忆,又可以从未来的时间点获取信息.为什么要获取未来的信息呢? 判断下面句子中Teddy是否是人名,如果只从前面两 ...