首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python regex -清理一些Gcode

Python regex -清理一些Gcode
EN

Stack Overflow用户
提问于 2013-07-15 18:16:18
回答 2查看 855关注 0票数 0

我已经和这个问题斗争了一段时间了,非常感谢你的建议!在将Gcode文件发送到3d打印机之前,我正在从Gcode文件中剥离某些元素

我的字符串是

代码语言:javascript
复制
f100G00X345.234Y234F345.5623I-2344.234J234.234F544

或者类似的,我观察以匹配(为了删除)字母'F|f‘后面跟着数字(浮点数)的元素,在上面的字符串中是:

代码语言:javascript
复制
f100 - F345.5623 - F544

到目前为止,我的正则表达式非常接近

代码语言:javascript
复制
(F|f).*?([^0-9|.]|\Z)

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

我想(不确定)它找到了F字母,并抓取了所有数字、点或字符串结尾的内容。但这也包括最后一个字符和上面的字符串中的匹配

代码语言:javascript
复制
f100G - F345.5623I - F544

那么,我该如何丢弃匹配中的最后一个字符,或者什么才是更好的方法。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-07-15 18:18:36

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

代码语言:javascript
复制
[Ff][\d.]+

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

演示:

代码语言:javascript
复制
>>> 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|.]负字符类模式也排除了|符号。排除了负字符类的[^...]中的所有内容。

票数 2
EN

Stack Overflow用户

发布于 2013-07-15 18:32:55

或者您可以使用split:

代码语言:javascript
复制
re.split(r'[^fF\d.][^fF]*', example)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17651831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档