我在matlab中有一个字符串,如下所示:
str =
Z 1 -355.66338432 1
Z 2 1.38339828 412
Z 3 9.00000000 412
Z 4 -10.27835665 312 22 - 1
Z 5 3.00000000 612 2 2
Z 6 6.53259554 612 2 2
Z 7 5.00000000 812 33 - 2
Z 8 0.19040409 812 33 - 2
Z 9 2.00000000 812 3 3
Z 10 -1.00534284 812 3 3
Z 11 7.27727717 512 64 - 62 1
我想在第三列中提取数字,但我似乎无法弄清楚regexp的正确用法。
答案 0 :(得分:1)
我没有MATLAB方便,所以我无法提供代码。但一般情况下:一次遍历字符串一行,然后使用正则表达式:
^\s*Z\s*\d+\s*(-?\d+\.\d+).*$
这会将数字捕获为第一个捕获组\1
。正则表达式扩展为:
^ Start of line
\s*Z\s* First column - whitespace, literal `Z`, whitespace
\d+\s*a Second column - integer number, whitespace
(-?\d+\.\d+) Third column - a (possibly negative) decimal number.
.* Anything
$ End of line
在Regexr上查看它。
或者,使用实际用于此工作的工具:textscan()
。 (Mathworks documentation。)