黑马程序员技术交流社区

标题: 正则表达式问题 [打印本页]

作者: 怀念子龙    时间: 2015-4-11 10:46
标题: 正则表达式问题
写一个正则表达式,    判断一个两位数   如“11”,“21”  ,若两个数字相同则返回false   ,不同则返回true,
比如“11”则返回false,“21”则返回true  。
请不要用!false=true 这种做法。
作者: liaohongjie    时间: 2015-4-11 10:56
if(!String.matches(".\\1"))
作者: liaohongjie    时间: 2015-4-11 10:57
应该是这样,使用到  组与叠词 的概念
作者: liaohongjie    时间: 2015-4-11 10:59
写错了,if(!String.matches("(.)\\1")) ,如果是判断多个就是 if(!String.matches("(.)\\1+"))
作者: lurenge    时间: 2015-4-11 11:29
我也在求答案啊
作者: 怀念子龙    时间: 2015-4-11 12:11
liaohongjie 发表于 2015-4-11 10:56
if(!String.matches(".\\1"))

我已经注明了不能用!false=true 这种做法, 因为这是我从另一个题目中单独抽取出来的一个关键问题。如果用!的话就不能用在那个题目中了。
作者: 1017161726    时间: 2015-4-11 12:34
匹配是否相同,就该用match,。你说的  !false=true,应该是不要直接判断第一位是否和第二位相同。
作者: major2015    时间: 2015-4-11 13:54
Pattern.compile("(\\d)\\1")
作者: wkz_crystal    时间: 2015-4-11 20:32
本帖最后由 wkz_crystal 于 2015-4-11 20:34 编辑

晕倒,相同返回false,不同返回true,还真是有点难呢?自己写一个类继承Pattern类算了,然后覆写掉mathches(参数1,参数2);的方法……
让其相同返回false,不同返回true就好!其他方法没有想到!

作者: wkz_crystal    时间: 2015-4-11 20:52
本帖最后由 wkz_crystal 于 2015-4-11 20:56 编辑

哥们:突然我想到了用三元运算符的方式就能over了!
请看代码:我写了一个具体的例子:
  1. import java.util.regex.*;
  2. class WkzTestDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 ifSame(66);
  7.         }

  8.         public static void ifSame(int number)
  9.         {
  10.                 //把数字装换成为字符串,方便主体内容的判断
  11.                 String str=String.valueOf(number);

  12.                 //按照要求需要判断的正则表达式方法:
  13.                 String reg="^(\\d)\\1{1}$";

  14.                 if (number>0 && str.length()!=2)
  15.                 {
  16.                         System.out.println("请输入位数为:两位数的正整数!");
  17.                 }else
  18.                 {
  19.                         //这里用了三元运算符进行判断如果是相同,返回假,如果是假,返回真!
  20.                         boolean flag=Pattern.matches(reg,str)?false:true;
  21.                         //做判断提示用的!
  22.                         if (flag==false)
  23.                         {
  24.                                 System.out.println("这个数字:"+number+" 其位数上的值是相同的!");
  25.                         }else
  26.                         {
  27.                                 System.out.println("这个数字:"+number+" 其位数上的值是不相同的!");
  28.                         }
  29.                 }
  30.         }
  31. }
复制代码




作者: sisel    时间: 2015-4-11 21:45
Pattern p=Pattern.compile("(\\d)\\1{1}");p.matches(字符串)
作者: liaohongjie    时间: 2015-4-14 11:28
上面已经有答案了,最好用正则引擎




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2