[闭月羞花猫] ~~~~~~~~~~~~~~~~~求一正则表达式~~~~~~~~~~~~~~~~~~~~~~~

luyang1016 2007-12-04 02:12:06
一个朋友问我一个正则表达式,没想出来。

String str = "000003250000";

使用证则表达式,把str前面的所有0都替换成字母a

上式,结果应该是 aaaaa3250000

str.replaceAll("^((0)*)", ""); 这个式子倒是可以把3前面所有的0都去掉

但是什么样的表达式,能把3前面所有的0都替换成相同数目的a

请高人指教!
...全文
129 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Clesome_VC 2007-12-06
  • 打赏
  • 举报
回复
学习了下 14楼的高手 用了正则表达式的正向预搜索 但是这样如果匹配字符串“0000032500006”时,替换结果是“aaaaa325aaaa6”
Clesome_VC 2007-12-06
  • 打赏
  • 举报
回复
高手啊 学习了 呵呵
malligator 2007-12-05
  • 打赏
  • 举报
回复
		String s = "000003250000";
System.out.println(s.replaceAll("0(?=0*[^0])", "a"));
Clesome_VC 2007-12-04
  • 打赏
  • 举报
回复
bukebuhao 方法不错
bukebuhao 2007-12-04
  • 打赏
  • 举报
回复
想不起来,只有这样了


//pattern
String regex ="" ,strMatcher = "";
//regex = "(<\\w+>)(\\s*\\w+\\s*)(<\\/\\w+>)";
//regex = "(<\\w+\\s+\\w+\\s+\\/>)";
regex = "(^0+)([^0]+)\\w*";
Pattern p = Pattern.compile(regex);
//matcher
//strMatcher = "<td> <label sdf /> bbb </label> </td>";
strMatcher = "000003250000";
Matcher m = p.matcher(strMatcher);
String replacement = "";
//find
while (m.find()) {
//<\\w+>
System.out.println(m.group(1));
for (int i= 0; i < m.group(1).length(); i++) {
replacement += "a";
}
System.out.println(strMatcher.replaceAll("(^0+)", replacement));
}
joyce-lan 2007-12-04
  • 打赏
  • 举报
回复
学习
lionest 2007-12-04
  • 打赏
  • 举报
回复
JFJFJFJF!
Clesome_VC 2007-12-04
  • 打赏
  • 举报
回复
不好意思 系统老慢 我以为没提交上呢 重复了
Clesome_VC 2007-12-04
  • 打赏
  • 举报
回复
LZ原话,“能把3前面所有的0都替换成相同数目的a”,是否是任意个0都可以替换成相同个数a?
笨方法,
思路:取出要替换的字符串,如“0003250000”取出为“000”,在用“a”替换里面所有的“0”,最好用替换后的“aaa”去替换“0003250000”中的“000”,代码如下,请指点

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

public static void main(String[] args){
String str = "0003250000";
String result = "";

Pattern pattern = Pattern.compile("^0*");
Matcher matcher = pattern.matcher(str);
String rStr = "";
String lStr = "";
if(matcher.find())
{
rStr = matcher.group();
}
if(!rStr.equals(""))
{
lStr = rStr.replaceAll("0","a");
result = str.replaceAll("^0*",lStr);
}
System.out.println(str);
System.out.println(result);
}
}

Clesome_VC 2007-12-04
  • 打赏
  • 举报
回复
LZ原话,“能把3前面所有的0都替换成相同数目的a”,是否是任意个0都可以替换成相同个数a?
笨方法,
思路:取出要替换的字符串,如“0003250000”取出为“000”,在用“a”替换里面所有的“0”,最好用替换后的“aaa”去替换“0003250000”中的“000”,代码如下,请指点

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

public static void main(String[] args){
String str = "0003250000";
String result = "";

Pattern pattern = Pattern.compile("^0*");
Matcher matcher = pattern.matcher(str);
String rStr = "";
String lStr = "";
if(matcher.find())
{
rStr = matcher.group();
}
if(!rStr.equals(""))
{
lStr = rStr.replaceAll("0","a");
result = str.replaceAll("^0*",lStr);
}
System.out.println(str);
System.out.println(result);
}
}

Clesome_VC 2007-12-04
  • 打赏
  • 举报
回复
LZ原话,“能把3前面所有的0都替换成相同数目的a”,是否是任意个0都可以替换成相同个数a?
笨方法,
思路:取出要替换的字符串,如“0003250000”取出为“000”,在用“a”替换里面所有的“0”,最好用替换后的“aaa”去替换“0003250000”中的“000”,代码如下,请指点

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

public static void main(String[] args){
String str = "0003250000";
String result = "";

Pattern pattern = Pattern.compile("^0*");
Matcher matcher = pattern.matcher(str);
String rStr = "";
String lStr = "";
if(matcher.find())
{
rStr = matcher.group();
}
if(!rStr.equals(""))
{
lStr = rStr.replaceAll("0","a");
result = str.replaceAll("^0*",lStr);
}
System.out.println(str);
System.out.println(result);
}
}

imA 2007-12-04
  • 打赏
  • 举报
回复
用Java不知道怎么搞定,但是通过ultraedit应该能搞定,你可以看看
http://topic.csdn.net/u/20071130/11/3fd47a4b-7322-49c9-a913-64c60c517b40.html
这篇帖子。关于ultraedit中的正则表达式的用法可以参考:
http://hi.baidu.com/hahalyf/blog/item/2a670b454a63193c86947330.html
dracularking 2007-12-04
  • 打赏
  • 举报
回复
不知道能不能一个replaceAll完成 关系组的长度貌似无法直接获得
TerryLhw1983 2007-12-04
  • 打赏
  • 举报
回复
纠正。。。
System.out.println(str.replaceAll("^0*0", "a"));
TerryLhw1983 2007-12-04
  • 打赏
  • 举报
回复

package test;

public class MTest {

public static void main (String [] args) {
String str = "0000000003250000";
System.out.println(str.replaceAll("^0*0", ""));
}
}

lionest 2007-12-04
  • 打赏
  • 举报
回复
public class Test {

public static void main(String[] args){
String str = "000003250000";
System.out.println(str);
System.out.println(str.replaceAll("^(0){5}", "aaaaa"));
}
}

62,614

社区成员

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

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