请问正则表达式字符串,只想保留第一个该如何做?

比如说这个字符串有很多个asd,有连续几个的,也有只是一个的,
但是我想只保留第一个asd,后面的asd全部删掉,该怎么做?
(在不影响其他字符的基础上)

ssssssssgsdfasdasdasdasdjlkjhkjhalkasdasdjsdkajshdasdaklsjdasdhkjashgdaklsh
想要的结果:

ssssssssgsdfasdjlkjhkjhalkjsdkajshdaklsjdhkjashgdaklsh

求高手给点提示

Java代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
  public static void main(String[] args) {
    String s = "ssssssssgsdfasdasdasdasdjlkjhkjhalkasdasdjsdkajshdasdaklsjdasdhkjashgdaklsh";
    System.out.println(s);
    // è¡¨è¾¾å¼åˆ†ä¸‰éƒ¨åˆ†ï¼š
    // (?<=asd) å‰å‘环视,匹配一个位置,在这个位置之前有asd
    // (.*?) åŒ¹é…ä¸¤ä¸ªasd之间的字符,使用非贪婪匹配,这样.*就不会匹配asd
    // (asd) åŒ¹é…éžç¬¬ä¸€ä¸ªasd
    Pattern p = Pattern.compile("(?<=asd)(.*?)(asd)");
    Matcher m = p.matcher(s);
    StringBuffer sb = new StringBuffer();
    while (m.find()) {
      // æŠŠåŒ¹é…çš„(.*?)(asd)替换成(.*?)
      m.appendReplacement(sb, m.group(1));
    }
    m.appendTail(sb);
    System.out.println(sb.toString());
  }
}

查找:(?<=asd)(.*?)(asd)

替换:\1

注意:使用的正则引擎需支持非贪婪匹配。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-27
不用正则,写程序吧。
相似回答