有关正则匹配的问题

dangelrose 2009-12-30 01:17:03
我现在已经达到了这样的效果:
有一段文字: seo kkk seo

我可以用匹配的方法匹配所有seo并且替换成其他的字样。
我让seo对应8888
替换之后的效果就是
8888 kkk 8888



我是用java的pattern 来做的 它的替换是替换所有符合要求的。

但是现在我想只替换 第一个 符合要求的。。怎么做??


就是替换成

8888 kkk seo。
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
t2xingzhe 2009-12-30
  • 打赏
  • 举报
回复
Pattern p1 = Pattern.compile("seo");
Matcher m1 = p1.matcher("seo kkk seo 999 seo jjj seo seo");
StringBuffer buf = new StringBuffer();



m1.find(1); //随便替换出现seo的位置
m1.appendReplacement(buf, "888");

m1.appendTail(buf);
println(buf);
dangelrose 2009-12-30
  • 打赏
  • 举报
回复
额 谢谢 大家。。我自己也知道 原来有first这个方法 。。傻掉了。。呵呵 结贴
magicbu 2009-12-30
  • 打赏
  • 举报
回复
用String的replaceFirst方法
zhuzeitou 2009-12-30
  • 打赏
  • 举报
回复
额,傻了,原来就有replaceFirst,我还去自己写了一个……
zhuzeitou 2009-12-30
  • 打赏
  • 举报
回复
	public static void main(String[] args) {
String reg = "seo";
String replace = "8888";
String str = "aaa seo kkk seo ";
System.out.println(replaceFirst(str, reg, replace));
}

public static String replaceFirst(String str, String from, String to) {
int len = from.length();
int offset = str.indexOf(from);
if (offset < 0)
return str;
StringBuffer sb = new StringBuffer();
sb.append(str.substring(0, offset));
sb.append(to);
sb.append(str.substring(offset + len));
return sb.toString();
}
t2xingzhe 2009-12-30
  • 打赏
  • 举报
回复
replaceFirst
public String replaceFirst(String replacement)替换模式与给定替换字符串匹配的输入序列的第一个子序列。
此方法首先重置匹配器。然后,它将扫描输入序列以查找该模式的匹配项。不是匹配一部分的字符被直接追加到结果字符串;在结果中匹配内容将被替换字符串替换。替换字符串可能包含到已捕获子序列的引用,如在 appendReplacement 方法中一样。

在给定正则表达式 dog、输入 "zzzdogzzzdogzzz" 和替换字符串 "cat" 的情况下,为该表达式针对匹配器调用此方法将产生字符串 "zzzcatzzzdogzzz"。

调用此方法将更改此匹配器的状态。如果在将来的匹配操作中使用该匹配器,则应该首先重置它。


多看看文档,我没有调试,因为这里写的很清楚了
swandragon 2009-12-30
  • 打赏
  • 举报
回复

public static void main(String[] args){
String reg = "seo";
String replace = "8888";
String str = "aaa seo kkk seo ";
int index = str.indexOf(reg);
if(index != -1){
str = str.substring(0,index) + replace + str.substring(index+reg.length());
}
System.out.println(str);
}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧