首先推荐一个在线测试正则表达式的网址:http://tool.oschina.net/regex

本文测试环境基于HTML5和JavaScript(JS)

使用正则表达式处理一个字符串时,如果只匹配一个值并将所有匹配替换成另一个值是比较简单的。例如:

// 目标字符串
var s = '"""asd  !@#$%^&*()_+{}|":?><./;\][=-~` """   ff"" "V  "ere " " rer"';
// 匹配其中所有的 "
var r = /"/g;// 将其替换成 T
var ss = s.replace(r, 'T');// 结果为 TTTasd  !@#$%^&*()_+{}|T:?><./;\][=-~` TTT   ffTT TV  Tere T T rerT
alert(ss);

但是如果想不改变字符串开始和结束的“ " ”,只将中间的“ " ” 进行double。

一般处理方法可以分三步,第一步掐头,第二步去尾,第三步与上文类似即可。

如果想用一步就实现目标,就必须将字符串掐头去尾同时匹配并替换。正向思路是:

不能匹配开头的若干个“ " ”,且不能匹配结尾的若干个“ " ”,在此基础上,匹配所有的“ " ”并替换成自身的两倍。

基于这个思路我没找到结果。于是我利用正则中的子表达式概念,进行反向思路:

匹配开头的若干个“ " ”作为子表达式1,匹配结尾的若干个“ " ”作为子表达式2,匹配所有的“ " ”作为子表达式3

替换时,将子表达式1和2替换成自身,所以等同没有替换。将子表达式3替换两次。

这样就能达到掐头去尾匹配中间的目的。代码如下:

// 目标字符串
var s = '"""asd  !@#$%^&*()_+{}|":?><./;\][=-~` """   ff"" "V  "ere " " rer"';
// 匹配其中所有的 "
var r = /(^"+)|("+$)|("+)/g;// 将其替换成 T
var ss = s.replace(r, '$1$3$3$2');// 结果为 """asd  !@#$%^&*()_+{}|"":?><./;\][=-~` """"""   ff"""" ""V  ""ere "" "" rer"
alert(ss);

注意,这里(^"+)|("+$)|("+) 分别按顺序代表:条件一 是不是开头的若干个“ " ”;条件二 是不是结尾的若干个“ " ”;条件三,是不是若干个“ " ”。匹配的过程中,开头的“ " ”会被记录为$1 结尾的不满足条件一,但会被记录为$2 其它的不满足条件一,二;才会被记录为$3。这样替换时才不会出错。

如果颠倒顺序为("+)|(^"+)|("+$)  所有的“ " ”都会记录为$1 后面两种均失效。

由此可见,正则表达式中,匹配的顺序也是很重要的。

掐头去尾-利用正则表达式的匹配顺序相关推荐

  1. iOS数据搜索技巧之【利用正则表达式进行匹配查找数据 】1、使用正则表达式对聊天记录的关键词进行监控 2、NSPredicate在正则表达式的应用

    文章目录 引言 I.[使用正则表达式对聊天记录的关键词进行监控] II iOS Predicate Format String Syntax [NSPredicate在正则表达式的应用] III 知识 ...

  2. 正则匹配url android,Android利用正则表达式如何匹配URL

    在Android项目中遇到一个问题,需求是需要获取浏览器分享出来的内容中的URL. 正常情况下分享出来的URL信息是包含在Bundle的intent.EXTRA_TEXT字段中的,而Tittle信息一 ...

  3. C#后台利用正则表达式查找匹配字符

    /// <summary>         /// 发送短信 系统固化短信         /// </summary>         /// <param name= ...

  4. java正则表达式匹配数字范围_在java中怎么利用正则表达式匹配数字

    在java中怎么利用正则表达式匹配数字 发布时间:2020-12-03 17:47:12 来源:亿速云 阅读:58 作者:Leah 在java中怎么利用正则表达式匹配数字?针对这个问题,这篇文章详细介 ...

  5. 【超详总结/理解:正则表达式】特点/元字符/正则表达式中的标志位-flag/RegExp/重复操作与后向引用/匹配模式/表达邮箱/正则表达式对象的方法/利用正则表达式限制网页表单里的文本框输入内容

    文章目录 正则表达式: 正则表达式的用途 正则表达式的组成-元字符 正则表达式的特点 正则表达式中的标志位-flag JavaScript中的正则表达式解析 RegExp 定义 RegExp RegE ...

  6. php省市区筛选,PHP利用正则表达式匹配省市区

    这次给大家带来PHP利用正则表达式匹配省市区,PHP利用正则表达式匹配省市区的注意事项有哪些,下面就是实战案例,一起来看一下.preg_match('/(.*?(省|自治区|北京市|天津市))+(.* ...

  7. excel中用正则匹配_excel 利用正则表达式匹配工作表中的数据

    excel 利用正则表达式匹配工作表中的数据 sheet1中A列放需要匹配的数据 sheet2中A列放正则表达式,可以是多个,但至少一个 匹配到了则在sheet1中C列对应行显示相关标记内容,比如本案 ...

  8. python正则匹配特殊字符_python 利用正则表达式提取特殊信息

    1.删除字符串中的 Python注释 案例: import re time = "2020-01-01 # 这是一个日期" num = re.sub(r'#.*$', " ...

  9. 利用正则表达式匹配标点问题

    做了一个任务,将每个描述中除了中文,拼音和数字中的其他符号找出来.查找资料后发现利用正则表达式做这个问题 我写了一个方法和测试的例子如下: package com.temaiba;import jav ...

最新文章

  1. Matlab与线性代数 -- 零矩阵
  2. Apache Server和JMeter调试
  3. 【FLink】FLink学习遇到的好文章
  4. 使用DevExpress的WebChartControl控件绘制图表(柱状图、折线图、饼图)
  5. .net环境下如何使用MySql数据库
  6. RHEL7.X安装12.2RAC时root.sh错误CLSRSC-400的解决方案
  7. linux音频alsa驱动分析之一(over-view)
  8. 当贝显示服务器生病,【当贝市场】电视盒子卡顿的三大原因
  9. 计算机编码器的工作原理,优先级编码器74LS148的电路结构、工作原理及使用方法...
  10. android手机导入iphone,安卓手机文件怎么传到苹果手机
  11. 2020 年高中数学联赛试题及解析
  12. identity和assigned 的区别
  13. oracle测试实用SQL语句
  14. JAVA 字符串数组按照ACCII码表排序
  15. 刘盈盈计算机科学与技术,关于成立乐清市中小学幼儿园新教师专业发展指导师团队的通知...
  16. 一文详解脏读、不可重复读、幻读
  17. 用指针实现将字符串2合并在字符串1后面
  18. LK光流金字塔算法原理及C++实现
  19. 511遇见易语言程序集模块和类模块的区别
  20. 一个用Dijkstra算法实现的路由算法的java程序——9 图信息文件示例

热门文章

  1. CMake windows下代理设置
  2. 2019网易笔试(4-7题)
  3. java之空指针异常处理
  4. SPSS Modeler 建模前准备—数据平衡与特征选择(指南 第十一章)
  5. 【转自杨建荣博客】通过执行计划中的CONCATENATION分析sql问题
  6. 通过快递鸟如何接入圆通速递电子面单
  7. 论文笔记—ITS+假名管理—ASPA: Advanced Strong Pseudonym based Authentication in Intelligent Transport System
  8. HDFS 系列二:HFDS 命令行操作
  9. ipp协议 服务器,IPP远程服务
  10. Git:真实 merge