我有数百个包含数字数组的文件。阵列大小不一。我需要确定哪些数组只有三个元素并提取它们的值。
以下是一些例子:
askjdh fdshajkjashf hjd ([123, 2321, 321, 123, 3425.98]);
askjdh ljkjsd hjd ([123, 2321, 321.345]);
askjdh w;klejfjk hjd ([123, 2321, 321.345]); % aksdhj
askjdh ljkjsd hjd ([ 13, 21 , -45]);
上面的两场比赛应该是:
askjdh ljkjsd hjd ([123, 2321, 321.345]);
askjdh ljkjsd hjd ([ 13, 21 , -45]);
值是:
123, 2321, 321.345
13, 21, -45
我认为这会奏效,但事实并非如此:
\[(.*),(.*),(^[^,].*$)\]
这确实有效......但看起来相当笨重。也许有更优雅的东西?
\[\s*([-+]?\d+\.?\d*)\s*,\s*([-+]?\d+\.?\d*)\s*,\s*([-+]?\d+\.?\d*)\s*\]
答案 0 :(得分:0)
你可以使用这样的正则表达式:
\[\s*(?:-?\d*\.?\d+\s*,\s*){2}-?\d*\.?\d+\]
<强> Working demo 强>
它类似于你的正则表达式,但使用{2}
表示法可以缩短它。
答案 1 :(得分:0)
答案 2 :(得分:0)
以下是 I 尝试执行的操作:
\[
\s*
(?:
\s*
(\d+(?:\.\d+)?)
\s*\,\s*
)+
(?: # this is supposed to match the last number, which is not followed by a ","
\s*
(\-?\d+(?:\.\d+)?)
\s*
)?
\]
https://regex101.com/r/zG5eZ5/1
但出于某种原因,我只得到最后两个数字(查看&#34;匹配信息&#34;,在右侧),而不是全部。
答案 3 :(得分:0)