日期:2014-05-20  浏览次数:20627 次

一个regular expression问题
用perl5的规则
String regex =
"\\s*([\u4e00-\u9fa5]{2,10})\\s+([\u4e00-\u9fa5]{2,10})\\s+(\\d*.?\\d{1,2})\\s*"

这个可以表示什么? 哪个高手给解释一下啊


------解决方案--------------------
这个正则表达式可能想提取2段汉字,接1个带最多2位小数的数字
但这样写有问题

\s* 空白字符(空格 制表位) 0个或多个
[\u4e00-\u9fa5]{2,10} 汉字 2个至10个
\s+ 空白字符 1个或以上
\d* 数字0个或多个
.? 任何字符(不含换行) 0个或1个(.不是表示小数点,而是表示任何字符)
\d{1,2} 数字1个或2个


------解决方案--------------------
带两位小数的数字这样写也有问题
(\\d*.?\\d{1,2})
应改为
(\\d+\\.\\d{1,2})

如果是数字,可以不带小数,或带1-2位小数,应改为
(\\d+(?:\\.\\d{1,2})?)