java 正则替换同一类java 字符串 非正则替换

Java替换中使用正则表达式实现中间模糊匹配
使用“.+?”实现中间模糊匹配的代码:
public class Test {
public static void main(String[] args) {
String str="总会在某一个回眸的时刻醉了流年,濡湿了柔软的心.总会有某一个回眸的时刻醉了流年,濡湿了柔软的心";
str=str.replaceAll("总会在.+?流年", "总会有某一个回眸的时刻醉了流年");
System.out.println(str);
注:只能模糊匹配中间不确定的字符串
java 字符串模糊匹配
java字符串模糊匹配
java字符串模糊匹配
用正则表达式替换电话号码中间四位
pycharm 替换功能 模糊匹配 使用正则表达式
JAVA中正则表达式匹配,替换,查找,切割的方法
java模糊匹配某文件夹下的文件并删除
正则表达式匹配手机号码,用星号代替中间数字
没有更多推荐了,体会强大的Java正则表达式:字符串查找 匹配,替换_中华文本库
第1页/共4页
体会强大的Java正则表达式:字符串查找匹配,替换
正则表达式异常强大,一直理解不深,用的也不深,这次项目中尝试,体会到了它的强大之处。字符串查找,匹配,替换,正则无不能做,特别是灵活的运用子串匹配得到的变量值$1,$2,再进行二次处理能够达到很巧妙的效果。
Java中使用也比较简单:
1. 编译正则表达式的字面值得到对应的模式Pattern对象;
2. 创建匹配给定输入与此模式的匹配器M
3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大。
直接代码吧
public static void main(String[] args) {
//被替换关键字的的数据源
Map tokens = new HashMap();
tokens.put(“cat”, “Garfield”);
tokens.put(“beverage”, “coffee”);
//匹配类似velocity规则的字符串
String template = “${cat} really needs some ${beverage}.”;
//生成匹配模式的正则表达式
String patternString = “\\$\\{(” + StringUtils.join(tokens.keySet(), “|”) + “)\\}”;
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(template);
//两个方法:appendReplacement, appendTail
StringBuffer sb = new StringBuffer();
第1页/共4页
寻找更多 ""求: 用 Java 正则去掉字符串中重复出现的字符!_百度知道
求: 用 Java 正则去掉字符串中重复出现的字符!
Stringstr=&abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec&;str=str.replaceAll(reg,&&);System.out.println(str);我想得到:abcde顺序可以不一样,也就是去掉重复出现的字符!!...
String str = &abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec&;str = str.replaceAll(reg, &&);System.out.println(str);我想得到 : abcde
顺序可以不一样,也就是去掉重复出现的字符!!
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
time量子纠缠
time量子纠缠
采纳数:1095
获赞数:9390
擅长:暂未定制
举例:1、String&str&=&&abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec&;&str&=&str.replaceAll(reg,&&&);&System.out.println(str);&2、str&=&str.replaceAll(&(?s)(.)(?=.*\\1)&,&&&);&(?s)(.)(?=.*\1)&3、(?s)&开启单行模式&DOTALL&让.&号匹配任意字符&(.)&任意字符&并捕获在第一组&(?=.*\1)&这是断言,&表示后面内容将是&任意个字符加上第一组所捕获的内容&这样,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为&&&&空串.&进行&全局替换后,&整个字符串所出现的字符将不重复。另外:正则表达式默认是从左向右匹配,&java中似乎没有逆向匹配的选项所以你可以先反转字符串,&然后replace,&然后再反转如下
采纳数:110
获赞数:434
str = str.replaceAll(&(?s)(.)(?=.*\\1)&, &&);-----------------------------------(?s)(.)(?=.*\1)(?s)
开启单行模式 DOTALL
让. 号匹配任意字符(.) 任意字符
并捕获在第一组(?=.*\1)
这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容这样子,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为 && 空串.进行 全局替换后, 整个字符串所出现的字符将不重复。
本回答被提问者和网友采纳
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求一个正则表达式
可以替换字符串中不包括开头和结尾的所有的&【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:722,699贴子:
求一个正则表达式
可以替换字符串中不包括开头和结尾的所有的&收藏
想了半天没想出来 求大神给解决一下
replaceAll(&&&,&你想换成啥&);
没看见开头和结尾。。
我找到了/(?!(^&|&$))&/g谢谢大家
public static void main(String[] args) throws Exception {
String str=&123&&tyu&&edw&;
int flag=0;
for(int i=0;i&str.length();i++){
if(str.charAt(i)=='&'){
String replaceStr=&asd&;
int begin=str.indexOf(&&&);
int last=str.lastIndexOf(&&&)+(flag-1)*(replaceStr.length()-1);
str=str.replaceAll(&&&, replaceStr);
System.out.println(str);
if(begin!=-1){
str=str.substring(0,begin)+&&&+str.substring(begin+replaceStr.length(),str.length());
if(last!=-1){
System.out.println(last);
last=last-(replaceStr.length()-1);
str=str.substring(0,last)+&&&+str.substring(last+replaceStr.length(),str.length());
System.out.println(str); }
登录百度帐号Java正则多字符串匹配替换
转载 &更新时间:日 19:23:54 & 作者:
正则表达式异常强大,一直理解不深,用的也不深,这次项目中尝试,体会到了它的强大之处。字符串查找,匹配,替换,正则无不能做,特别是灵活的运用子串匹配得到的变量值$1,$2,再进行二次处理能够达到很巧妙的效果。
Java中使用也比较简单:1. 编译正则表达式的字面值得到对应的模式Pattern对象;
2. 创建匹配给定输入与此模式的匹配器Matcher;
3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大。
代码如下:public static void main(String[] args) { &&& //被替换关键字的的数据源 &&& Map&String,String& tokens = new HashMap&String,String&(); &&& tokens.put("cat", "Garfield"); &&& tokens.put("beverage", "coffee"); &&& //匹配类似velocity规则的字符串 &&& String template = "${cat} really needs some ${beverage}."; &&& //生成匹配模式的正则表达式 &&& String patternString = "\\$\\{(" + StringUtils.join(tokens.keySet(), "|") + ")\\}"; &&& Pattern pattern = Pattern.compile(patternString); &&& Matcher matcher = pattern.matcher(template); &&& //两个方法:appendReplacement, appendTail &&& StringBuffer sb = new StringBuffer(); &&& while(matcher.find()) { &&&&&&& matcher.appendReplacement(sb, tokens.get(matcher.group(1))); &&& } &&& matcher.appendTail(sb); &&& //out: Garfield really needs some coffee. &&& System.out.println(sb.toString()); &&& //对于特殊含义字符"\","$",使用Matcher.quoteReplacement消除特殊意义 &&& matcher.reset(); &&& //out: cat really needs some beverage. &&& System.out.println(matcher.replaceAll("$1")); &&& //out: $1 really needs some $1. &&& System.out.println(matcher.replaceAll(Matcher.quoteReplacement("$1"))); &&& //到得邮箱的前缀名。插一句,其实验证邮箱的正则多种多样,根据自己的需求写对应的正则才是王道 &&& String emailPattern = "^([a-z0-9_\\.\\-\\+]+)@([\\da-z\\.\\-]+)\\.([a-z\\.]{2,6})$"; &&& pattern = Pattern.compile(emailPattern); &&& matcher = pattern.matcher(""); &&& //验证是否邮箱 &&& System.out.println(matcher.find()); &&& //得到@符号前的邮箱名& out: test &&& System.out.println(matcher.replaceAll("$1")); &&& //获得匹配值 &&& String temp = "&meta-data android:name=\"appid\" android:value=\"joy\"&&/meta-data&"; &&& pattern = Pattern.compile("android:(name|value)=\"(.+?)\""); &&& matcher = pattern.matcher(temp); &&& while(matcher.find()) { &&&&&&& //out: appid, joy &&&&&&& System.out.println(matcher.group(2)); &&& } }
一些老是忘基础
[...] 位于括号之内的任意字符
[^...] 不在括号之中的任意字符
. 除了换行符之外的任意字符,等价于[^\n]
\w 任何单字字符, 等价于[a-zA-Z0-9]
\W 任何非单字字符,等价于[^a-zA-Z0-9]
\s 任何空白符,等价于[\ t \ n \ r \ f \ v]
\S 任何非空白符,等价于[^\ t \ n \ r \ f \ v]
\d 任何数字,等价于[0-9]
\D 除了数字之外的任何字符,等价于[^0-9]
[\b] 一个退格直接量(特例)
{n, m} 匹配前一项至少n次,但是不能超过m次
{n, } 匹配前一项n次,或者多次
{n} 匹配前一项恰好n次
? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {0, 1}
+ 匹配前一项1次或多次,等价于{1,}
* 匹配前一项0次或多次.等价于{0,}
| 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式
(...) 分组.将几个项目分为一个单元.这个单元可由 *、+、?和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引用使用
\n 和第n个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数
^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头
$ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾
\b 匹配的是一个词语的边界.简而言之就是位于字符\w 和 \w之间的位置(注意:[\b]匹配的是退格符)
\B 匹配的是非词语的边界的字符
邮箱验证,以前验证邮箱,网上搜个正则装在自己程序里面就用,其实这是不对的,不同的公司对邮箱的验证格式是不一样的,比方说163和qq邮箱注册,他们要求的格式都不一样,所以搜一个正则表达式就去套所有的邮箱格式也是不对的,符合自己的需求的正则才是正确的。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 java正则替换字符串 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信