正则表达式在比赛中跳过空格

时间:2015-10-18 15:44:18

标签: regex

我有一串数字代表3种不同的长度。我需要在字符串中选出第二个长度,但无法找到从匹配中排除空白区域。这是字符串的示例。它在点之后总是有6位数,但在它变化之前。在这种情况下,我需要907.086614完全匹配。

1417.322835 907.086614 2.267717

^\s(\d+\.\d{6})

我已经玩过不同的背后但却无法排除白色空间。

3 个答案:

答案 0 :(得分:1)

\s的潜在副作用是它匹配回车。

Example mistaken match

由于您正在寻找一组浮点数的第二列,因此最好明确指出:

\d[ \t](\d+\.\d+)[ \t]\d

^                          trailing digit from first col
   ^                       a single space or tab
         ^  ^ ^            capture float
                   ^       single space or tab
                       ^   leading digit of third col

Demo

您还可以将捕捉放在前瞻和后瞻之间:

(?<=\d[ \t])(\d+\.\d+)(?=[ \t]\d)

Demo

答案 1 :(得分:0)

背后的积极面貌如下:

(?<=\s)(\d+\.\d{6})

<强> Online Demo

(?<=\s) 正面看待 - 断言下面的正则表达式可以匹配\s

答案 2 :(得分:0)

你可以试试这个

(?<=\s)(\d+\.\d{6})(?=\s)

请参阅demo

但是如果你仍然想要使用你的模式,请删除行锚^的开头并匹配group 1

\s(\d+\.\d{6})

请参阅demo