正则表达式(Java,C#,C++)
课题
- 使用正则表达式匹配字符串
使用正则表达式 "\d{3}-(\d{4})-\d{2}" 匹配字符串 "123-4567-89"
返回匹配结果:’"123-4567-89" 以及 "4567" - 使用正则表达式替换字符串(模式)
使用正则表达式 "(\d+)-(\d+)-(\d+)" 匹配字符串 "123-4567-89"
使用模式字符串 "$3-$1-$2" 替换匹配结果,返回结果 "89-123-4567"。 - 使用正则表达式替换字符串(回调)
使用正则表达式 "\d+" 匹配字符串 "123-4567-89"
将匹配结果即三个数字串全部翻转过来,返回结果 "321-7654-98"。 - 使用正则表达式分割字符串
使用正则表达式 "%(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++)的更多相关文章
- 正则表达式 java
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单.如果你不熟悉这个术语,那么"正则表达式"(Regular Expres ...
- 正则表达式 java版
众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学习及使用正则表达式,便成了解决这一矛 ...
- 正则表达式——Java程序员懂你
正则表达式 关键字:正则表达式,Pattern,Matcher,字符串方法,split,replace 前文书立下了一个flag,这里要把它完成,就是正则表达式,它是一个工具,是很早就存在于标准Uni ...
- 最新手机号正则表达式 java 、javascript版正则表达式验证是否为11位有效手机号码
最近在做注册登陆页面,都要涉及到验证11位有效手机号码,这里贴出代码,希望能帮到有这个开发需求的朋友. function isPoneAvailable($poneInput) { var myreg ...
- 正则表达式(Java版整理)
基础 元字符 代码 说明 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线或汉字 \s 匹配任意的空白符 \d 匹配数字 ^ 匹配字符串的开始 $ 匹配字符串的结束 \b 匹配字符串的结束 ...
- 正则表达式java,javaScript应用
dfa nfa 混合:捕获:断言: 正则引擎大体上可分为不同的两类:DFA和NFA,而NFA又基本上可以分为传统型NFA和POSIX NFA. 1.正则语法 捕获组: 没用()的字符都是一个一个 ...
- Java正则表达式java.util.regex类的简单使用
1.什么是正则表达式? 正则表达式(regular expression)是根据字符串集合内每个字符串共享的共同特性来描述字符串集合的一种途径.正则表达式可以用于搜索.编辑或者处理文本和数据. Jav ...
- 常用的正则表达式@java后台
package Regex; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @作者 Goofy * @邮件 ...
- 正则表达式&&Java文本复杂操作
正则表达式1.正则表达式的优势和用途? 一种强大而灵活的文本处理工具: 大部分编程语言 .数据库.文本编辑器.开发环境都支持正则表达式.2.正则表达式定义: 正如他的名字一样是描述了一个规则,通过这个 ...
- 密码校验正则表达式(java 环境)
密码校验需求: 1) 密码控制只能输入字母.数字.特殊符号(~!@#$%^&*()_+[]{}|\;:'",./<>?)2) 长度 6-16 位,必须包括字母.数字.特殊 ...
随机推荐
- Linux中的其他命令
1. 修改文件的所有者 chown 用户名 文件名 2. 修改文件所属组 chgrp 组名 文件名 3. 创建用户,创建组,将用户添加到组中等 修改film文件夹的所有者和所属组 修改film文 ...
- javascript 变量定义
一.javascript中,变量定义的位置与写在哪个<script></script>标签对内无关,只分前后顺序,写在前面的后面就能够访问,写在后面的前面会提示“未定义”. 例 ...
- vuex基本熟悉与使用
vuex的入门与使用讲解 官网:https://vuex.vuejs.org/zh/guide/state.html 定义:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式 ...
- Python的数据库连接池DBUtils
DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程 ...
- npm使用入门(package.json)
npm使用入门 crazygit 关注 2017.03.10 18:31 字数 1773 阅读 1617评论 0喜欢 10 NPM是什么 npm npm makes it easy for JavaS ...
- 夜神模拟器+seleinm抓取手机app(参考资料集合)
目前准备开始实现这个技术,将看起来还算可靠的参考链接粘贴如下: http://www.cnblogs.com/puresoul/p/4597211.html https://www.cnblogs.c ...
- Valgrind memcheck 8种错误实例
调不尽的内存泄漏,用不完的Valgrind Valgrind 安装 1. 到www.valgrind.org下载最新版valgrind-3.2.3.tar.bz2 2. 解压安装包:tar –jxvf ...
- 计算图像相似度——《Python也可以》之一
声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday 先将两张图片转化为直方图,图像的相似度计算就转化为直方图的距离计算了,本文依照如下公式进行直方图 ...
- freePBX汉化方法记录——备忘
FreePBX汉化[root@bgcc69:/var/www/html/admin/i18n/zh_CN/LC_MESSAGES]$pwd/var/www/html/admin/i18n/zh_CN/ ...
- MFC~~~~~~edit_control 和 静态文本框设置透明和字体设置
一 字体设置比较简单~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 .在 testdlg.h(假设工程名字为test)中 设置一个 public 的 ...