RegEx匹配第二行中的数字

时间:2013-09-05 16:11:42

标签: c# regex

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

^C1.1
xC20 
SS3 
M 4 

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

4 个答案:

答案 0 :(得分:1)

/^[^\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+)?/

答案 1 :(得分:1)

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

.*\n\D*(\d*).*\n

答案 2 :(得分:0)

查看第1组匹配的内容:

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

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

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

两者都是多线未设置......

答案 3 :(得分:0)

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

^                  # 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的风味,那么还有其他选择。