最近在做播放器,用系统的方法过滤选出sd卡上的音乐文件,发现有好多文件都只是一些无用的音频文件,采用
"^\\w+\\d.{5,}|\\w"
来过滤歌曲名,但奇怪为什么“b222aa2“这种形式的也可以匹配上呢?懂得给解释下,谢谢了。
"^\\w+\\d.{5,}|\\w"
来过滤歌曲名,但奇怪为什么“b222aa2“这种形式的也可以匹配上呢?懂得给解释下,谢谢了。
解决方案 »
- 想问个问题,android能把整个布局缩放吗?
- 在同一个wifi下,如何实现手机与pc的交互
- android 自动更新APK 弹出对话框问题
- 根据应用程序包名获取应用icon
- 请教,想找android软件方面的工作
- 小妹继续请教TabHost实现问题。
- android的学习
- 百度地图api可以支持 定制 自己的 导航页面吗?
- 关于HttpPost的setHeader的问题
- 如何在桌面定制应用widget 和 快捷方式?
- 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? 现在看起来这个错误太明显。明天再试试,结贴给分。再次谢谢。