正则表达式功能到底有多大

萬里無雲 2009-09-10 05:12:18
18955302752 460036051532711 1 2 3 4 5
这样一行字符 输入一组正则表达式
1.能使冒个列(如”460036051532711“)的截取(如截取后两位前面的5位)
2.使两个列相加 如:第三列和第六列相加 =5
3.两个列字符串连接 如:第三列和第六列相连 14
4.第一列的189换成153
5.删除第三列
等等

高手研究下。。。
最好java环境
如得到15355302752 15327 1 2 3 5 5

本人只能实现其中的一部分。。感觉这个方法不好
高手有好的解决方案吗?


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

public class test1 {

public static void main(String[] args) {
String s = "";
Pattern pattern = Pattern.compile("\\d{4}(\\d*\t)\\d{2}(\\d{10})\\d*\t\\w*(\t\\d*\t\\d*)(\t[\u4e00-\u9fa5]{0,})$");
Matcher matcher = pattern.matcher("18955302752 460036051532711 4ffdafds 1 00000 中文字符");
while (matcher.find()) {
for(int i =1 ; i<=matcher.groupCount(); i++)
{
//System.out.println(matcher.group(i));
s += matcher.group(i);
}
}
System.out.println(s);
}
}



...全文
185 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc8646 2010-04-01
  • 打赏
  • 举报
回复
不明白,观望……
  • 打赏
  • 举报
回复
根据示例的覆盖程序 --> 根据示例的覆盖程度
  • 打赏
  • 举报
回复
提问正则表达式的问题,请在提问时达到下面最为基本的要求:

1,正则表达式是一种模式匹配,是根据字符串的规律来操作的,因此需要详细说明具体要做些什么;
2,对于查找的问题,详细说明寻找字符串的特征是什么,这些字符串的边界是什么,或者说有些什么规律;
3,对于替换的问题,详细说明原串是什么,替换后是什么,有些什么规律;
4,对于验证的问题,详细说明验证的格式是什么;
5,举两三个覆盖范围尽可能广的示例。需要注意的是,根据示例的覆盖程序,所回复的正则表达式仅仅能满足所提供的示例!
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 liyun919 的回复:]
18955302752 460036051532711 1 2 3 4 5
这样一行字符 输入一组正则表达式  同时实现这5个功能
1.能实现冒个列(如”460036051532711“)的截取(如截取后两位前面的5位)
2.使两个列相加 如:第三列和第六列相加 =5
3.两个列字符串连接 如:第三列和第六列相连 14
4.第一列的189换成153
5.删除第三列

[/Quote]

说实在的,我就没看懂你想要做什么!
cz61919345 2009-09-11
  • 打赏
  • 举报
回复
晕!一见正则就范晕!
swandragon 2009-09-11
  • 打赏
  • 举报
回复
十分强大,非常强大,相当强大
wal812834184 2009-09-11
  • 打赏
  • 举报
回复
功能相当强大!!!1
hbgzg3006 2009-09-11
  • 打赏
  • 举报
回复
//其实用split基本都可以解决。你看看正则的吧
Matcher m=Pattern.compile("^(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+)$").matcher("18955302752 460036051532711 1 2 3 4 5");
while(m.find()){
System.out.println(m.group(1).substring(m.group(1).length()-7,m.group(1).length()-2));//后两位前面的五位
System.out.println(Integer.parseInt(m.group(3))+Integer.parseInt(m.group(6)));//第1 2列相加
System.out.println(m.group(3)+m.group(6));//3 6列相连
System.out.println(m.group(1).replaceAll("189", "153"));//替换
System.out.println(m.group().replaceAll(m.group(3), ""));//删除第三列
}
萬里無雲 2009-09-11
  • 打赏
  • 举报
回复
18955302752 460036051532711 1 2 3 4 5
这样一行字符 输入一组正则表达式 同时实现这5个功能
1.能实现冒个列(如”460036051532711“)的截取(如截取后两位前面的5位)
2.使两个列相加 如:第三列和第六列相加 =5
3.两个列字符串连接 如:第三列和第六列相连 14
4.第一列的189换成153
5.删除第三列
hbgzg3006 2009-09-11
  • 打赏
  • 举报
回复
你描述的太不清楚,比如说字符串中间的空格以及字符串的长度等等,倘若用你给的那个例子,很好写正则。
萬里無雲 2009-09-11
  • 打赏
  • 举报
回复
看来高手真是难等呀
zhengwengang258 2009-09-10
  • 打赏
  • 举报
回复
啊?
lxxzhy 2009-09-10
  • 打赏
  • 举报
回复
手机号?

62,614

社区成员

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

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