求奖励
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- /*
- * 我理解楼主的意思是要在一串数字字符串中匹配6个不同的数字并捕获每个数字
- * 不知道对不???
- *
- */
- public class Regex2 {
-
- public static void main(String[] args) {
- /*
- * 解释: regex = "(((((\\d)[^$1])[^$2])[^$3])[^$4])[^$5]"
- *
- * 首先
- * 第一个为数字,所以为\\d
- * 然后第二个数字不能与第一个数字相同,把第一个封装成组,对组表示的值取非 ,所以 (\\d)[^$1],匹配2个不同数字
- * 然后第三个数字不能与第一个,第二个相同,把第一个和第二个封装成组,对组取非,所以((\\d)[^$1])[^$2],匹配3个不同数字
- * 。。。以此类推,就可以匹配6个不同数字了
- *
- * 如果楼主不知道不清楚 组,$n,^ ,[]的概念,可以查看api文档,或者追问
- *
- * 等待楼主的奖励,^-^
- *
- */
- String str = "1123456234589";//结果为123456,234589
- String regex = "(((((\\d)[^$1])[^$2])[^$3])[^$4])[^$5]";
- Pattern p = Pattern.compile(regex);
- Matcher m = p.matcher(str);
- while (m.find()) {
- System.out.println(m.group());
- }
-
- }
- }
复制代码 |