首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个regular expression有关问题

2012-02-08 
一个regular expression问题用perl5的规则String regex \\s*([\u4e00-\u9fa5]{2,10})\\s+([\u4e00-\u9fa

一个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})?)

热点排行
Bad Request.