Java REGEX 模式问题

标签 java android

我正在开发一个通话记录应用程序,我遇到了一个问题,我的模式不匹配,但我解决了这个问题。仍然不是最好的解决方案。

String subject = "d20160812215452p38762620479tincomingmfalse.3gp";

String pattern = "^d[\\d]{14}p[\\d]{11}t[\\w]{8}m[\\w]*\\.3gp";

if(subject.matches(pattern)){
    System.out.print("Matching");
}else{
    System.out.print("Not maching");
}

问题是电话号码String subject****p38762620479**** 可能大于 8 个字符,另外我如何分割它显示的模式:日期、数字......

最佳答案

添加到@kolboc的答案中,为了获取您匹配的组,请执行以下操作:

String subject = "d20160812215452p38762620479tincomingmfalse.3gp";
String pattern = "^d([\\d]{14})p([\\d]{11})t([\\w]{8}m[\\w]*\\.3gp)";
Pattern r = Pattern.compile(pattern);

// create a matcher object
Matcher m = r.matcher(subject);
if (m.find( )) {
   System.out.println("Found all: " + m.group(0) );
   System.out.println("Found date: " + m.group(1) );
   System.out.println("Found phone: " + m.group(2) );
   System.out.println("Found title: " + m.group(3) );
} else {
   System.out.println("NO MATCH");
}

关于Java REGEX 模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934522/

相关文章:

java - 具有 get(int index) 和避免重复能力的 O(1) 性能的数据结构

android - 如何向 Edittext 或 Searchview 添加弯曲的下划线?

android - 我如何使用其 Android SDK 简单地在 Facebook 墙上分享内容?

Android:在没有内存分配的情况下读取加速度计?

android - 在表面 View 中打开的android相机的最佳相机参数是什么

java - 从方法返回的值可以分配给常量吗?

java - 只有一个事务数据源的 Spring @Transactional 行为

java - 如何使用 VTD-XML 解析器将嵌套的 XML 文件元素放入对象列表?

java - 尝试用 Java 重置日历

android - SQLite 错误 : unable to open database "/data/data/PackageName/databases/SampleDB.db": unable to open database file