4

我需要一个正则表达式来匹配第二行中的数字。类似的输入是这样的:

^C1.1
xC20 
SS3 
M 4 

十进制模式(-?\d+(\.\d+)?)匹配所有数字,第二个数字可以在后面的代码循环中获取,但我需要一个正则表达式来直接获取第二行中的数字。

4

4 回答 4

2
/^[^\r\n]*\r?\n\D*?(-?\d+(\.\d+)?)/

这通过在输入的开头捕获一行来操作:

^         Beginning of the string
[^\r\n]*  Anything that isn't a line terminator
\r?\n     A newline, optionally preceded by a carriage return

然后是所有非数字字符,然后是您的数字。

由于您现在反复改变了您的需求,请尝试以下尺寸:

/(?<=\n\D*)-?\d+(\.\d+)?/
于 2013-09-05T16:15:55.717 回答
1

我能够用这个正则表达式捕获它。

.*\n\D*(\d*).*\n
于 2013-09-05T16:18:18.667 回答
0

查看与此匹配的任何内容的第 1 组:

^.*?\r\n.*?(\d+)

如果这不起作用,请尝试以下操作:

^.*?\r\n.*?(\d+)

两者都未设置多行...

于 2013-09-05T16:24:11.410 回答
0

我可能会在/^.*?\r?\n.*?(-?\d+(?:\.\d+)?)/哪里使用捕获的组......</p>

^                  # beginning of string
.*?                # anything...
\r?\n              # followed by a new line
.*?                # anything...
(                  # followed by...
   -?              # an optional negative sign (minus)
   \d+             # a number
   (?:             #   -this part not captured explicitly-
       \.\d+       # a dot and a number
   )?              #   -and is optional-
)

如果它是一种支持lookbehind 的风格,那么还有其他选择。

于 2013-09-05T16:25:43.943 回答