Python正则表达式 - 清理一些Gcode

时间:2013-07-15 10:16:18

标签: python regex string g-code

我一直在和这个争斗一段时间,我会很感激! 我在将Gcode文件中的某些元素发送到3d打印机之前将其剥离

我的字符串是

f100G00X345.234Y234F345.5623I-2344.234J234.234F544

或类似的,我看是匹配(以便删除)字母'F | f'后面跟一个数字(浮点数)的元素,在上面的字符串中是:

f100 - F345.5623 - F544

我的正则表达非常接近

(F|f).*?([^0-9|.]|\Z)

http://rubular.com/r/4GFziqlcR6

我认为(不确定)找到F字母,并抓住所有数字或点或结尾的东西。但这也包括最后一个字符和上面的匹配

f100G - F345.5623I - F544

那么,我如何放弃比赛中的最后一个角色或者更好的方法。

感谢

2 个答案:

答案 0 :(得分:2)

您与.*?模式的匹配方式太多了。匹配只是数字和点:

[Ff][\d.]+

这匹配Ff类中的一个字符,后跟\d.类(数字或点)中的一个或多个字符。

演示:

>>> import re
>>> example = 'f100G00X345.234Y234F345.5623I-2344.234J234.234F544'
>>> re.findall(r'[Ff][\d.]+', example)
['f100', 'F345.5623', 'F544']
>>> re.sub(r'[Ff][\d.]+', '', example)
'G00X345.234Y234I-2344.234J234.234'

请注意,您的[^0-9|.]否定字符类模式也会排除|符号。 否定字符类[^...]内的所有被排除在外。

答案 1 :(得分:0)

或者你可以使用split:

re.split(r'[^fF\d.][^fF]*', example)