现在我有这样的感觉:
([1-9]{0,9}m - [0-9]{0,9}m)
与1m - 5m、7m - 17m等短语相匹配。
有时字符串可能是1.5m - 5m。
我怎样才能匹配这样的字符串呢?
发布于 2016-01-19 12:33:06
您可以使用(?:\.\d+)?添加可选的十进制部分。
([1-9]{0,9}(?:\.\d+)?m\h*-\h*\d{0,9}(?:\.\d+)?m)请参阅regex演示
如果第一个数字可以是任意数字,请将[1-9]替换为\d。
(?)指的是匹配一个文字点,后面跟着一个或多个数字,一次或零次。
\h*匹配零或多个水平空白空间。
详细信息:
\d到9范围内的[1-9]{0,9} -0到9位数字(替换为以匹配任何数字)(?:\.\d+)? -可选小数部分m -文字m\h* -零或更多水平空格- -文字连字符\h* -零或更多水平空格\d{0,9} -任何数字,0到9次出现(?:\.\d+)?m -见上文。如果计划阻止与数字中的前导零匹配,但接受像101m - 5m这样的字符串,则可能需要使用
((?!0)\d{0,9}(?:\.\d+)?m\h*-\h*\d{0,9}(?:\.\d+)?m)
^^^^^见另一个regex演示。展望只是将一般的\d限制为不从0开始。
发布于 2016-01-19 13:07:12
你可以试试这个。
\d+(\.\d+){0,1}m\s-\s\d+(\.\d+){0,1}m
.的数字必须是digits.so认为它必须是一次,或者ZERO.so.https://stackoverflow.com/questions/34876895
复制相似问题