课题

  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"。

Java

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Test { public static void main(String[] args) {
String s = "123-4567-89";
Pattern r = Pattern.compile("\\d{3}-(\\d{4})-\\d{2}");
Matcher m = r.matcher(s);
if (m.find())
for (int i = 0; i <= m.groupCount(); i++)
System.out.printf("group %d : %s\n", i, m.group(i)); System.out.println(s.replaceFirst("(\\d+)-(\\d+)-(\\d+)", "$3-$1-$2")); // https://stackoverflow.com/questions/19737653/what-is-the-equivalent-of-regex-replace-with-function-evaluation-in-java-7
r = Pattern.compile("\\d+");
m = r.matcher(s);
StringBuffer sb = new StringBuffer();
while (m.find())
m.appendReplacement(sb, new StringBuffer(m.group(0)).reverse().toString());
m.appendTail(sb);
System.out.println(sb.toString()); r = Pattern.compile("%(begin|next|end)%");
s = "%begin%hello%next%world%end%";
System.out.println(Arrays.asList(r.split(s)));
}
} /*
group 0 : 123-4567-89
group 1 : 4567
89-123-4567
321-7654-98
[, hello, world]
*/

C#

using System;
using System.Text.RegularExpressions; namespace Sample
{
class Test
{
public static void Main(string[] args)
{
var r = new Regex(@"\d{3}-(\d{4})-\d{2}");
var s = "123-4567-89";
var m = r.Match(s);
foreach (Group g in m.Groups)
Console.WriteLine($"group {g.Index} : {g.Value}"); r = new Regex(@"(\d+)-(\d+)-(\d+)");
Console.WriteLine(r.Replace(s, "$3-$1-$2")); r = new Regex(@"\d+");
s = r.Replace(s, m2 => {
var arr = m2.Groups[0].Value.ToCharArray();
Array.Reverse(arr);
return new string(arr);
});
Console.WriteLine(s); r = new Regex("%(?:begin|next|end)%");
s = "%begin%hello%next%world%end%";
Console.WriteLine(String.Join(",", r.Split(s)));
}
}
} /*
group 0 : 123-4567-89
group 4 : 4567
89-123-4567
321-7654-98
,hello,world,
*/

C++

#include <iostream>
#include <string>
#include <vector>
#include <boost/regex.hpp>
#include <boost/algorithm/string.hpp>
using namespace std; int main()
{
string s = "123-4567-89";
boost::regex r(R"(\d{3}-(\d{4})-\d{2})");
boost::match_results<string::const_iterator> mr;
boost::regex_search(s, mr, r);
for (size_t i = 0; i < mr.size(); ++i)
cout << "group " << i << " : " << mr[i] << endl; boost::regex r2(R"((\d+)-(\d+)-(\d+))");
cout << boost::regex_replace(s, r2, "$3-$1-$2") << endl; boost::regex r3(R"(\d+)");
s = boost::regex_replace(s, r3, [](auto& match) {
string s = match.str();
reverse(s.begin(), s.end());
return s;
});
cout << s << endl; boost::regex r4("%(?:begin|next|end)%");
s = "%begin%hello%next%world%end%";
vector<string> v;
for (boost::sregex_token_iterator begin(s.begin(), s.end(), r4, -1), end, i = begin; i != end; ++i)
v.push_back(i->str());
cout << boost::algorithm::join(v, ",") << endl;
} /*
group 0 : 123-4567-89
group 1 : 4567
89-123-4567
321-7654-98
,hello,world
*/

正则表达式(Java,C#,C++)的更多相关文章

  1. 正则表达式 java

    如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单.如果你不熟悉这个术语,那么"正则表达式"(Regular Expres ...

  2. 正则表达式 java版

    众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学习及使用正则表达式,便成了解决这一矛 ...

  3. 正则表达式——Java程序员懂你

    正则表达式 关键字:正则表达式,Pattern,Matcher,字符串方法,split,replace 前文书立下了一个flag,这里要把它完成,就是正则表达式,它是一个工具,是很早就存在于标准Uni ...

  4. 最新手机号正则表达式 java 、javascript版正则表达式验证是否为11位有效手机号码

    最近在做注册登陆页面,都要涉及到验证11位有效手机号码,这里贴出代码,希望能帮到有这个开发需求的朋友. function isPoneAvailable($poneInput) { var myreg ...

  5. 正则表达式(Java版整理)

    基础 元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 ^ 匹配字符串的开始 $ 匹配字符串的结束 \b 匹配字符串的结束 ...

  6. 正则表达式java,javaScript应用

    dfa nfa 混合:捕获:断言:  正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和POSIX NFA.   1.正则语法 捕获组: 没用()的字符都是一个一个 ...

  7. Java正则表达式java.util.regex类的简单使用

    1.什么是正则表达式? 正则表达式(regular expression)是根据字符串集合内每个字符串共享的共同特性来描述字符串集合的一种途径.正则表达式可以用于搜索.编辑或者处理文本和数据. Jav ...

  8. 常用的正则表达式@java后台

    package Regex; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @作者 Goofy * @邮件 ...

  9. 正则表达式&&Java文本复杂操作

    正则表达式1.正则表达式的优势和用途? 一种强大而灵活的文本处理工具: 大部分编程语言 .数据库.文本编辑器.开发环境都支持正则表达式.2.正则表达式定义: 正如他的名字一样是描述了一个规则,通过这个 ...

  10. 密码校验正则表达式(java 环境)

    密码校验需求: 1) 密码控制只能输入字母.数字.特殊符号(~!@#$%^&*()_+[]{}|\;:'",./<>?)2) 长度 6-16 位,必须包括字母.数字.特殊 ...

随机推荐

  1. java 多线程知识点

    线程状态图 说明: 线程共包括以下5种状态. 新建状态(New) : 线程对象被创建后,就进入了新建状态.例如,Thread thread = new Thread(). 就绪状态(Runnable) ...

  2. docker 里面的supervisord不断killed

    这个原因就一般是百度上大家说的,内存不足啦 但是死也得死个明白 用这个命令 dmesg | egrep -i -B100 'killed process' 看一下就知道了 我的是docker限制了内存 ...

  3. opencv中的缩放函数

    图像处理里面缩放操作是比较常见的: 最近邻插值:类似简单映射的处理方式,目标图像w1,h1,原始图像w0,h0,则在目标图像上的点(x,y)的像素点实际对应原始图上(x*w0/w1,y*h0/h1)的 ...

  4. js正则表达式30分钟入门教程

    2011-10-27 13:23:15 如何使用本教程 最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门——除非你是超人 :) 别被下面那些复杂的表达式吓倒,只要 ...

  5. vs2015 去除 git 源代码 绑定,改成向tfs添加源码管理

    除了下文的方法是将源码管理从git改成tfs之外,还要做以下几步即可 向tfs添加源码 打开源码管理(管理连接),双击打开你要向其中添加的tfs连接 选中该解决方案,右键 将解决方案添加到源码管理 嵌 ...

  6. [转]Excel.dll 导出Excel控制

    Excel.dll 导出Excel控制 2010-06-12 11:26 2932人阅读 评论(2) 收藏 举报 excelmicrosoftstring产品服务器google 最近做了个导出Exce ...

  7. js中级总结

    this问题: this是JavaScript的关键字      用途:指向某一个对象 如何判断this的指向 函数内:两种情况:1.以函数形式调用(不带 . 指向window ) 2.以方法形式调用 ...

  8. xshell连不上虚拟机linux的解决办法(用的默认NAT模式)

    1.找到Linux系统的ip地址 输入命令   ifconfig 2.打开本地网络连接 将VMnet1的ip地址设置为和虚拟机ip同一网段的ip 比如虚拟机Linux系统的ip为   192.168. ...

  9. win10安装.net framework3.5

    win10默认没有安装.net framework3.5,一般方法需提取Windows安装镜像,麻烦. 离线安装方法如下: cab格式.NET Framework 3.5离线安装包下载地址:百度网盘 ...

  10. 【Unix网络编程】chapter1简介

    1.1 概述 1.2一个简单的时间获取客户程序 网际套接字地址结构中IP地址和端口号这两个成员必须使用特定的格式,为此我们调用库函数htons("主机到网络端整数")去转换二进制端 ...