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

[正则]能否用零宽断言匹配

2013-07-01 
[正则]可否用零宽断言匹配我可以用下面的表达式匹配一个带小数数字,而且保证头尾不会为零^(([1-9]\d*)|(0

[正则]可否用零宽断言匹配
我可以用下面的表达式匹配一个带小数数字,而且保证头尾不会为零
"^(([1-9]\d*)|(0))(\.(([1-9])|(\d*[1-9])))?$",
能否改用零宽断言去匹配呢?我尝试过
"^(?(^[^0])[0-9]*|[1-9]*)[0-9](\.(?([^0]$)[0-9]*|[1-9]*))?$",
"^(?(^[^0])[0-9]*|[1-9]*)[0-9](\.(\d(?=([^0]$)))+)?$"
等。
但是小数部分没有完全搞定,另外整数部分改成这样为何就匹配不成功
"^(?(^[^0])[0]|[1-9])*[0-9]$",
另外,如何提高匹配效率?
请指教!谢谢!

[解决办法]
必须有小数并且开头结尾不为0:^[1-9]\d*\.\d*[1-9]$   
匹配效率则主要看回溯次数,因此尽量减少回溯

热点排行