当前位置: 代码迷 >> .NET相关 >> [正则]能否用零宽断言匹配
  详细解决方案

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

热度:498   发布时间:2016-04-24 03:06:37.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]$   
匹配效率则主要看回溯次数,因此尽量减少回溯
  相关解决方案