正则表达式能截取被匹配的部分么

wnba1983 2009-12-31 10:44:10
我要实现以下功能
首先有一个规则表,左边是输入规则,右边是输出规则
a*b*c 1*2*3
1??2 x??y

*代表多个符号,?代表一个符号

我现在输入一个字符串,比如 axyb123c,它附和规则里面的a*b*c,第一个*对应xy,第二个*对应123,那么我的输出就应该是1 xy 2 123 3(我这里用空格隔开是为了好看,其实没有空格)
再举个例子,例如我输入1ab2,输出就是下xaby

我现在能用正则表达式让axyb123c匹配上a*b*c,但是我不知道怎么把xy和123截取出来,好去匹配后面的输出1*2*3

正则表达式有函数可以直接把对应通配符的部分字符串截取出来么?有的话谁告诉我,如果没有,这个算法要怎么写啊,谁能告诉我,昨天晚上想到3点还是没想出来

这是一个公司的面试题!
...全文
446 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nickycheng 2009-12-31
  • 打赏
  • 举报
回复
a(.*)b(.*)c

然后match玩了用group取。看看关于正则Pattern的相关api
bambooman 2009-12-31
  • 打赏
  • 举报
回复
正则表达式是程序员基本功,虽然不要精通,但是要掌握一点。
苍蝇①号 2009-12-31
  • 打赏
  • 举报
回复
无聊的面试题,这种公司不去也罢
墨水鱼 2009-12-31
  • 打赏
  • 举报
回复
用正则表达式里的捕获组
swandragon 2009-12-31
  • 打赏
  • 举报
回复

public static void main(String[] args){
String str = "axyb123c";
System.out.println(str.replaceAll("a(.*)b(.*)c","1$12$23"));
str = "1ab2";
System.out.println(str.replaceAll("1(.)(.)2","x$1$2y"));
}

62,614

社区成员

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

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