最近在做播放器,用系统的方法过滤选出sd卡上的音乐文件,发现有好多文件都只是一些无用的音频文件,采用
"^\\w+\\d.{5,}|\\w"
来过滤歌曲名,但奇怪为什么“b222aa2“这种形式的也可以匹配上呢?懂得给解释下,谢谢了。
"^\\w+\\d.{5,}|\\w"
来过滤歌曲名,但奇怪为什么“b222aa2“这种形式的也可以匹配上呢?懂得给解释下,谢谢了。
解决方案 »
- 求一个tab导航样式的UI,高分跪求!
- 一个布局问题
- 关于Notification铃声停止的问题?
- Android Widget 动画 效果
- android到底支不支持有身份认证的RTSP播放呢???
- HP TC4200 平板,WACOM触屏,安装 ANDROID2,2 (X86)成功,有困惑
- 通讯录问题
- 创建安卓项目没有自动成生R.Java文件。
- Android状态通知栏Notification卡屏bug
- Eclipse运行android程序时出问题
- Host name may not be null 问题
- Andoird AlertDialog 中,当对话框出现后,点击了对话框外的空白处时,对话框自动关闭的事件是什么 有示例代码 谢谢
第一部分 ^\w+\d.{5,}
^\w+表示 由一个以上的单词字符(大小写字母及数字)开头
\d表示有一个数字
.{5,}表示一个任意字符出现至少五次第二部分
\w 一个单词字符这两个部分是或的关系 对于任何能够匹配第一部分或者第二部分的字符串 都可以匹配上整个正则
b222aa2 是怎么匹配上的呢? 第二部分只有一个字符显然不是和它匹配
^\w+ -> b // 至少一个单词字符
\d -> 2 // 一个数字
.{5,} -> 22aa2 // 刚好是5个任意字符
关于Java中正则表达式的使用 可以参考我的译文
http://blog.csdn.net/cugbabybear/article/details/14170355
首先多谢回复,按你所说的去理解,我看了下确实可以匹配上。但我现在还有疑惑在向你请教下。我最开始的正则是这样写的:
^\\w+\\d{5,}|\\w
目的是过滤掉以英文字符开头并且含5个以上数字的字符串,但发现没有过滤掉形如,0604a_3907413nGf,BBC0702_243243223snP,
201206cet4。前两个因为包含"_"的原因没匹配上,但为什么201206cet4也没能匹配上呢?或者你有更好的表达式吗?
因为元字符 \w 中包括字母和数字字符 你可以将\w改为[a-zA-Z]
如你说说那201206cet4应该是可以匹配上的啊。
^\\w -->以2开始,匹配
\\d{5,} --->01206正好5个数,匹配可结果证明“^\\w+\\d{5,}|\\w”不匹配“201206cet4”。
或者我的理解是因为\\w+直接就匹配到了字符串的结尾,然后再匹配\\d{5,}时就导致匹配不成功?
如你说说那201206cet4应该是可以匹配上的啊。
^\\w -->以2开始,匹配
\\d{5,} --->01206正好5个数,匹配可结果证明“^\\w+\\d{5,}|\\w”不匹配“201206cet4”。
或者我的理解是因为\\w+直接就匹配到了字符串的结尾,然后再匹配\\d{5,}时就导致匹配不成功?
你用的函数是什么?
我的代码如下: music_name = “201206cet4”;
Pattern pattern = Pattern.compile("^\\w+\\d{5,}|\\w");
Matcher matcher = pattern.matcher(music_name);
判断matcher.matches()的值为false.
我的代码如下: music_name = “201206cet4”;
Pattern pattern = Pattern.compile("^\\w+\\d{5,}|\\w");
Matcher matcher = pattern.matcher(music_name);
判断matcher.matches()的值为false.
matches()函数是判断字符串整体是否符合正则表达式
201206确实能匹配到正则上 但是你的正则结尾是数字 所以后边加上字幕就不匹配了
我的代码如下: music_name = “201206cet4”;
Pattern pattern = Pattern.compile("^\\w+\\d{5,}|\\w");
Matcher matcher = pattern.matcher(music_name);
判断matcher.matches()的值为false.
matches()函数是判断字符串整体是否符合正则表达式
201206确实能匹配到正则上 但是你的正则结尾是数字 所以后边加上字幕就不匹配了多谢,你的意思是cet搞的鬼,它们陪不上\d? 现在看起来这个错误太明显。明天再试试,结贴给分。再次谢谢。