正则表达式(Rust)

摘要:
使用正则表达式替换字符串(回调)。使用正则表达式“d+”匹配字符串“123-4567-89”以翻转匹配结果,即所有三个数字字符串,并返回结果“321-7654-98”。使用正则表达式拆分字符串使用正则表达式“%%”拆分字符串“%begin%hello%next%world%end%”,在正则表达式分隔符之间返回两个字符串“hello”和“world”。

课题

  1. 使用正则表达式匹配字符串
    使用正则表达式 "d{3}-(d{4})-d{2}" 匹配字符串 "123-4567-89"
    返回匹配结果:’"123-4567-89" 以及 "4567"
  2. 使用正则表达式替换字符串(模式)
    使用正则表达式 "(d+)-(d+)-(d+)" 匹配字符串 "123-4567-89"
    使用模式字符串 "$3-$1-$2" 替换匹配结果,返回结果 "89-123-4567"。
  3. 使用正则表达式替换字符串(回调)
    使用正则表达式 "d+" 匹配字符串 "123-4567-89"
    将匹配结果即三个数字串全部翻转过来,返回结果 "321-7654-98"。
  4. 使用正则表达式分割字符串
    使用正则表达式 "%(begin|next|end)%" 分割字符串"%begin%hello%next%world%end%"
    返回正则表达式分隔符之间的两个字符串 "hello" 和 "world"。

Rust

use regex::{Regex, Captures};
use std::ops::Index;
use itertools::Itertools;

fn main() -> Result<(), Box<dyn Error>> {
    let s = "123-4567-89,987-6543-21";
    let r = Regex::new(r"d{3}-(d{4})-d{2}")?;
    if r.is_match(s) { // if let m = r.find(s) {
        println!("Found Matches:")
    }
    for (i, c) in r.captures_iter(&s).enumerate() {
        for j in 0..c.len() {
            println!("group {},{} : {}", i, j, &c[j]);
        }
    }

    let r2 = Regex::new(r"(d+)-(d+)-(d+)")?;
    let s2 = r2.replace_all(&s, "$3-$1-$2");
    println!("{}", s2);

    let r3 = Regex::new(r"d+")?;
    let s3 = r3.replace_all(&s, |c: &Captures| c[0].chars().rev().collect::<String>());
    println!("{}", s3);

    let r4 = Regex::new("%(begin|next|end)%")?;
    let s4 = "%begin%hello%next%world%end%";
    let v = r4.split(s4).collect_vec();
    println!("{:?}", v);

    Ok(())
}

/*
Found Matches:
group 0,0 : 123-4567-89
group 0,1 : 4567
group 1,0 : 987-6543-21
group 1,1 : 6543
89-123-4567,21-987-6543
321-7654-98,789-3456-12
["", "hello", "world", ""]
*/

免责声明:文章转载自《正则表达式(Rust)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Ubuntu10.04下安装SQLite3(转贴)分布式模式之Broker模式(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nginx配置使用

nginx 安装(阿里云服务器)   1,nginx 安装 yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++ yum install -y lrzsz cd /usr/local/src wget ftp://ftp.csx.cam.ac.uk/pub/sof...

Grep 命令 用法大全

查找x文件 find / -name "x*" -ls 查找文件中x所在的行数 grep -n "x" -r *find . -name "*.java" | xargs grep -n "x*" 1、 参数: -I :忽略大小写 -c :打印匹配的行数 -l :从多个文件中查找包含匹配项 -v :查找不包含匹配项的行 -n:打印包含匹配项的行和行标 2...

js,jq,php使用正则方法

1.js使用正则表达式案例: <script> var str=”543535364565@qq.com”; var res=“/^d*@(QQ|qq|136).(com|cn)$/”; var result=res.exec(str); alert(result); </script> 2.php使用正则表达式案例: $em...

【UE】常用的UltraEdit使用技巧

Tip 1: Alt+C 列模式可以说最初选择使用这个文本编辑软件,原因很简单,就是因为“她”具有列编辑模式。如果您还不知道什么是列编辑模式的话,我想您应该好好研究一下啦。这是一个超级“赞”的功能。在对大文本进行批量的列编辑时候非她莫属(如果您是Windows平台上另外一个强大的文本编辑软件gVim的使用者除外)。快实验一下这个功能吧。Tip 2:Ctrl...

利用正则表达式,分割地址至省市县,更新MySQL数据库数据

一、部分主要源代码以及结果截图 import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.regex.Matche...

Jmeter实践:一粒云项目—Jmeter完成文件上传及批量完成文件上传(二十一)

完成文件上传的前提必须要完成登录 登录: 1.添加线程组:文件的上传操作 2.先完成登录接口: 在文件的上传操作下,添加http请求:登录 因为所有的请求用的ip地址都一样,所以添加一个http请求默认值 因为登录有个请求头相关信息,所以在登录下添加个HTTP信息头管理器 添加登录接口需要的参数: 添加查看结果树,查看结果: 3.接下来就是上传操...