精华内容
下载资源
问答
  • 今天我们为大家简单介绍一下正则表达式的替换函数,并举例说明正则表达式替换函数的应用。正则表达式之替换函数正则表达式中的替换函数有两种类型:ustrregexrf(s1,re,s2[,noc])ustrregexra(s1,re,s2[,noc])...

    导读

    在上篇推文《正则表达式匹配和提取函数》中简单介绍了正则表达式的匹配和提取函数,并用一些简单的例子向大家说明如何利用正则表达式匹配和提取文本。今天我们为大家简单介绍一下正则表达式的替换函数,并举例说明正则表达式替换函数的应用。

    正则表达式之替换函数

    正则表达式中的替换函数有两种类型:ustrregexrf(s1,re,s2[,noc])ustrregexra(s1,re,s2[,noc])

    其中r代表replace,即替换;f代表first,a代表all。两个函数分别代表将正则表达式re在字符串s1中匹配到的所有子字符串中的第一个和全部替换为字符串s2。在默认情况下,匹配是区分大小写的,但是如果定义noc为一个不为零的数,则匹配时不区分大小写。


    以下是几个简单的例子:

    dis ustrregexrf("ABab","ab","X"//表示将ab替换成x

    b82b4926cb7f2c0836a720122de3c3f1.png

    dis ustrregexrf("ABab","Ab","X") //没有匹配到Ab,因此没有发生替换

    a315d0c6da1465b3a21edc7722209259.png

     dis ustrregexrf("ABab","Ab","X",0) //在区分大小写的情况下,没有匹配到Ab,因此不发生替换

    a5b5573e6b6bdd88c9b2a21693afd708.png

    dis ustrregexrf("ABab","Ab","X",1//在不区分大小写的情况下,Ab既可以匹配到AB也可以匹配到ab,f表示将匹配到的第一个子字符串替换,即替换了A

    90f0823625bc4a20a02ca63c030b58e6.png

    dis ustrregexra("ABab","Ab","X",1//在不区分大小写的情况下,Ab既可以匹配到AB也可以匹配到ab,a表示将匹配到的所有子字符串替换,即替换成了XX

    4db08cafdd2aba792d2253f3fd7a62d5.png

    对于复杂一些的问题,处理过程也要复杂一些。比如在处理从网上找到的英文名字的时候,我们可能会发现多个英文名字连接在一起,这时我们就可以尝试用正则表达式的替换函数解决问题,接下来为大家举例说明。

    一、用input命令读入观测值

    clearinput str40 partners"Jeb SpencerSteven Hamerslag""Jules MaltzSteve Harrick""Raymond YangDavid LamJason LinKelly Liu""Fred WilsonBrad Burnham"endlist

    c9cd9a062293a84b21334956aa7a380b.png

    如第一行观测值“Jeb SpencerSteven Hamerslag”,事实上包括了两个英文姓名“Jeb Spencer”和“Steven Hamerslag”。我们需要将这行观测值拆分为两个姓名。

    二、使用正则表达式的替换函数进行姓名拆分

    通过观察,我们发现连接在一起的英文姓名特征为小写字母加大写字母。例如在第一行观测值中,第一个姓名最后一个字符为小写字母“r”,第二个姓名第一个字符为大写字母“S”,那么“rS”就是两个姓名连在一起的特征。所以我们尝试将相连的小写字母在前,大写字母在后的内容分开并在中间加上分号。

    replace partners = ustrregexra(partners, "([a-z])([A-Z])""$1;$2")list

    eba798071838f0b1c6f0203a9dffd39a.png

    其中[a-z]表示所有小写字母,[A-Z]表示所有大写字母。以第一行观测值为例,”([a-z])([A-Z])“的匹配结果为”rS“,”$1“表示第一个子表达式匹配到的内容,即”r“,”$2“表示第二个子表达式匹配到的内容,即”S“;那么”$1;$2“则表示”r;S“。因此就实现了在两个姓名之间加入分隔符”;“。如上图所示。

    三、整理

    名字完成拆分之后,需要用split命令对变量进行分隔。

    split partners,p(;)

    0246a2e77153d2ed7c44b917a4eb43f6.png

    如上图所示partners1-partners4即为分隔后的结果接下来我们用stack命令将这四个变量堆到一个变量下,并删除缺失值。
    stack partners1 - partners4, into(partners) cleardrop if partners == ""drop _stack

    6ed8daba72fbc1ca9d1ceabc757c4561.png

    如上图所示,我们完成了对这些英文姓名的拆分。

    完整命令如下:

    clearinput str40 partners"Jeb SpencerSteven Hamerslag""Jules MaltzSteve Harrick""Raymond YangDavid LamJason LinKelly Liu""Fred WilsonBrad Burnham"endreplace partners = ustrregexra(partners, "([a-z])([A-Z])", "$1;$2")split partners,p(;)stack partners1 - partners4, into(partners) cleardrop if partners == ""drop _stack
    以上就是本篇文章对正则表达式替换函数的简单介绍啦!上篇推文和本篇推文已经介绍了正则表达式的匹配、提取和替换函数。正则表达式作为一种强大、便捷、高效的文本处理工具,大家可以多多进行了解。
    展开全文
  • 标签:定义和用法replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。语法stringObject.replace(regexp,replacement)参数 描述regexp 必需。规定了要替换的模式的 RegExp ...

    标签:

    定义和用法

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    语法

    stringObject.replace(regexp,replacement)

    参数  描述

    regexp 必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

    replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。

    返回值

    一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    语法格式:

    需要匹配的对象.replace(正则式/字符串,替换的目标字符)

    正则表达式的匹配模式支持的2个标志

    g:表示全局模式(global),即模式将被应用于所有字符串而非发现一个而停止

    i:表示不区分大小写(ease-insensitive)模式,在确定匹配想时忽略模式与字符串的大小写

    说明

    字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

    replacement 可以是字符串,也可以是函数。如果它是字符串,那么没有匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

    字符  替换文本

    $1、$2、...、$99  与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。

    $& 与 regexp 相匹配的子串。

    $` 位于匹配子串左侧的文本。

    $‘ 位于匹配子串右侧的文本。

    % 直接量符号。

    注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

    实例:

    //1 替换所有的空白

    //var str = " 123AD asadf asadfasf adf ";

    var str = " 123AD asadf asadfasf adf ";

    var str=str.replace(/\s/g,"");

    console.log(str);

    //2 把所有的ad/AD替换成xx

    //var str = " 123AD asadf asadfasf adf ";

    var str = " 123AD asadf asadfasf adf ";

    var str=str.replace(/(ad)|(AD)/gi,"xx");

    console.log(str);

    //3 所有的逗号替换成句号abc,efg,123,abc,123,a

    var str = "abc,efg,123,abc,123,a";

    var str =str.replace(/,/g,".");

    console.log(str);

    //4 修改成绩,全改成100分

    var jsonStr = ‘[{"name":"张三",score:80},{"name":"张三",score:90},{"name":"张三",score:81}]‘;

    var jsonStr =jsonStr.replace(/\d+/g,"100");

    console.log(jsonStr);

    //5 把, , . 和。都改成 。

    var str = "“你饿了,调我们的粮进京。你渴了.调我们的水进京。高考了,你特么想尽千方百计不让我们的孩子进京。为什么?!” 我们呼吁:全国一张卷,一个录取线!愿赌服输!最近高考方案闹得沸沸扬扬,其实大家就是要的公平竞争!同样都是孩子,同样的国家,同样的教育!为何不同的待遇?";

    var str =str.replace(/,|,|\.|。/g,"。");

    console.log(str);

    //6 去掉前后空格,封装成函数

    var str = " 123AD asadf asadfasf adf ";

    //trim() trim去掉前后空格

    str =str.replace(/^\s+|\s+$/g,"");

    console.log("---"+str+"---");

    函数封装:

    function myTrim(str){

    return str.replace(/^\s+|\s+$/g,"");

    }

    console.log(myTrim(str));

    标签:

    展开全文
  • java正则表达式替换[@more@]//正则表达式替换--尾部为空格或者;String regex = "#w+((s)|(;)|()))";Pattern pattern = Pattern.compile(regex);Matcher matcher = pattern.matcher(sql);StringBuffer sbf = new ...

    java正则表达式替换[@more@]//正则表达式替换--尾部为空格或者;

    String regex = "#w+((s)|(;)|()))";

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(sql);

    StringBuffer sbf = new StringBuffer();

    while(matcher.find()){

    //System.out.println(sql.substring(matcher.start()+1, matcher.end()-1));

    //System.out.println(sql.substring(matcher.start()+1, matcher.end()-1).trim());

    String argsValue = jbpmArgs.get(sql.substring(matcher.start()+1, matcher.end()-1).trim());

    matcher.appendReplacement(sbf,argsValue);

    sbf.append(" ");

    }

    matcher.appendTail(sbf);

    sql = sbf.toString();

    //正则表达式替换--尾部是字符串结尾

    regex = "#w+($)";

    pattern = Pattern.compile(regex);

    matcher = pattern.matcher(sql);

    sbf = new StringBuffer();

    while(matcher.find()){

    //System.out.println(sql.substring(matcher.start()+1, matcher.end()));

    //System.out.println(sql.substring(matcher.start()+1, matcher.end()).trim());

    String argsValue = jbpmArgs.get(sql.substring(matcher.start()+1, matcher.end()).trim());

    matcher.appendReplacement(sbf,argsValue);

    sbf.append(" ");

    }

    matcher.appendTail(sbf);

    sql=sbf.toString();

    //正则表达式替换--尾部是括号的

    regex = "#w+())";

    pattern = Pattern.compile(regex);

    matcher = pattern.matcher(sql);

    sbf = new StringBuffer();

    while(matcher.find()){

    //System.out.println(sql.substring(matcher.start()+1, matcher.end()));

    //System.out.println(sql.substring(matcher.start()+1, matcher.end()).trim());

    String argsValue = jbpmArgs.get(sql.substring(matcher.start()+1, matcher.end()-1).trim());

    matcher.appendReplacement(sbf,argsValue);

    sbf.append(" ) ");

    }

    matcher.appendTail(sbf);

    sql=sbf.toString();

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25261409/viewspace-1058415/,如需转载,请注明出处,否则将追究法律责任。

    展开全文
  • 切割案例小练习:字符串77 23 91 99 31 排序输出23 31 77 91 99分析:字符切割数组字符数组转换成数字数组排序遍历拼接字符串代码结果替换案例小练习字符串:hi1everyone替换该字符串变为hieveryone代码和结果分组...

    dde96ada4daf1cbcd4b4d942ebe7469c.png

    切割案例小练习:字符串77 23 91 99 31 排序输出23 31 77 91 99

    分析:

    1. 字符切割数组
    2. 字符数组转换成数字数组
    3. 排序
    4. 遍历拼接字符串

    代码

    3f4bf70f5f6e749e0d0279c51f2e4cb5.png

    结果

    6428af342880b9a1fdb6733f0f2ff9cc.png

    替换案例小练习

    字符串:hi1everyone

    替换该字符串变为hieveryone

    代码和结果

    29c25aa9539358575440e2318b7f4405.png

    分组案例小练习

    通过从左到右计算其开括号来编号,在表达式

    ((A)(B(C))),存在四个这样的组

    1.((A)(B(C)))

    2.(A)

    3.(B(C))

    4.(C)

    准备一个叠词:高高兴兴,快快乐乐

    正则:

    1. 第一个字符任意字符.(点)
    2. 第二个字符和第一个要区分,所以第一个为(.)
    3. 让第一个字符即第一组再出现一次1

    所以此时正则为(.)1

    4.第三个字符为(.),为第二组

    5、第二组再出现一次2

    所以此时正则为(.)1(.)2

    测试:

    1fb963fb2085b04a091c9436720afa93.png

    结果

    a6fd5dab419f6f7969dbd32cb64e5aac.png

    在写一个“哈嘿哈嘿”

    正则:

    1. 第一个字符任意字符.(点)
    2. 第二个字符任意字符.(点)

    此时正则(..)

    3.让第一个(..)即第一组再出现一次1

    所以此时正则为(..)1

    代码

    377f2e36a77150f7c4c10466297b8dec.png

    结果

    9f9f23bec157bf25d6d0df1501b472fc.png

    案例练习

    需求:按照叠词切割“abccefggghijjjjkl”

    分析正则:

    其中cc、ggg、jjjj出现叠词

    先切一次:(.)1

    5a2a00a3496ec3356cc322d9cb282004.png

    使用“X+ X,一次或多次”这个知识点,所以正则是(.)1+

    0100b4698ce6f126a15b747dc6eda06d.png

    叠词练习

    字符串:我我。。。。我。。。我。喜。。。喜喜。。。。喜。。。。。欢。。。欢欢。。。。。欢。。。欢欢欢。。。。欢欢欢欢。。。你。。。你。。。。你你。。。

    还原成:我喜欢你

    先将多余的点去掉

    a803ff12261a2b95888be34d4bd97fa1.png

    进一步完成代码 $1代表组的内容,进行替换

    d71cba733ea7df827f1da59108754df0.png

    练习:把字符中的手机号提取出来

    准备数据:

    我爸爸的电话是15323450121,我妈妈的电话是13122311451,我的手机号是13241232333

    手机号正则1[53]d{9}

    结果

    e286c2386e4972cef522f7bedbfd939f.png
    展开全文
  • 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:...在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。Regular Expression的“Regular”一般被译...
  • 最近有同学找我咨询一个参数替换的问题,首先描述下场景:需要参数化的数据如下所示:这个时候如果利用单纯的if判断和字符串的find和replace方法,做起来是非常不明智的!代码量也非常多,也非常容易的混淆!这个...
  • Java 中用于 Unicode 的正则表达式数据都是由 Unicode 组织提供的。 Unicode 正则表达式标准(可以找到所有的子属性) http://www.unicode.org/reports/tr18/ 各 Unicode 字符属性的定义,可以用一看看某个字符具有...
  • java 正则表达是如何替换 123<style class="css">xxxxxxxxxx</style>abc,把style和里面的内容都替换没了,只留下123abc。 [b]问题补充:[/b] 正则表达式的代码怎么写
  • 正则表达替换问题

    2013-05-02 17:44:58
    找到url(../fonts/TitilliumMaps29L002.eot) 替换为 url(TitilliumMaps29L002.eot) 找到url(/images/else/zz_fram_tit.jpg) 替换为 url(zz_fram_tit.jpg) 我在myeclipse里的find/replace里操作的 表达式: ...
  • Visual studio 使用正则表达查找替换 原文 http://www.cnblogs.com/shineqiujuan/archive/2012/07/04/2575535.html 正则表达式是查找和替换文本模式的一种简洁而灵活的表示法。在“查找和替换”...
  • [img=https://img-bbs.csdn.net/upload/202102/16/1613407641_804584.png][/img]
  • 正则表达

    2019-03-11 21:14:56
    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 例如: runoo+b,可以匹配 runoob、...
  • 正则表达的理解

    2019-04-13 08:50:21
    什么是正则表达?正则表达是计算机科学的一个概念。它的英文名为:Regular Expression。 它是对字符串操作的一种逻辑,主要是用来验证、搜索、替换的。 正则表达式可以在JavaScript和C#中使用。 一、 JavaScript: 在...
  • "D:\Program Files\Java\ffk1.8.0_161\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2\lib\idea_rt.jar=10205:C:\Program Files\JetBrains\IntelliJ IDEA 2018.2\bin" -Dfile.e...
  • 前面记录过一篇关于js格式化字符串方法博文:JavaScript格式化字符串函数封装 近日做java项目时也有类似的字符串动态格式化的需求,因此,对照js方法的思路,实现一下java版的。主要是用String.java的replaceAll...
  • PHP Web开发实用教程 本章要点 正则表达式概念 模式匹配的使用 正则表达式的编写 正则表达式搜索和替换 利用正则表达式分割字符串 第8章 PHP中的正则表达式及式样匹配 8.1 正则表达式简介 8.1.1 正则表达式概念 正则...
  • Javascript正则表达

    2020-12-27 16:20:17
    JS正则表达式 正则表达式是构成搜索模式的字符序列。...正则表达式可用于执行所有类型的文本搜索和文本替换操作。 语法 /pattern/modifiers; 实例 var patt = /w3school/i; 例子解释: /w3school/i
  • VBA正则表达

    千次阅读 2018-10-11 17:27:16
    VBA正则表达 相关链接: http://www.cnblogs.com/dxy1982/archive/2011/09/09/2159246.html http://www.excelpx.com/thread-137472-1-1.html 数据验证经常出现的情况是,需要验证和处理大量的文本内容,有时候...
  • 1.使用正则表达式分割字符串:String[] string.split(String regex);"a b c".split("\\s");->[a, b, c]"a b c".split("\\s");->[a, b, , , , c]"a b c".split("\\s+");->[a, b, c]"a,b:;c".split("[\\,\\:\...
  • 正则表达

    2017-01-23 17:47:04
    使用正则表达试可以进行数据的匹配,字符串的验证,拆分,替换等功能。通过正则表达式可以拆分指定的各种表达式 如:当判断一个数字是否由数字组成可以有一下两种方法: public class RegexDemo01 { //判断一个字符串...
  • 第一个参数是要替换的字符串类型 第二个参数是将所有字符串替换成这个参数 比如replaceAll("\s",“1”);这里就是把所有空内容(空格,换行等等)换成了 “1” 。 代码 public class Demo01 { public static void ...
  • 替换使用 | 字符来允许在两个或多个替换选项之间进行选择。例如,可以扩展章节标题正则表达式,以返回比章标题范围更广的匹配项。但是,这并不象您可能认为的那样简单。替换匹配 | 字符任一侧最大的表达式。 您可能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 959
精华内容 383
关键字:

替换正则表达