移动GCode+Python的正则表达式

2024-06-16 11:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下正则表达式:

self.PosCheck = re.compile('[gG0-3]{1,3}|\s{1,2}[xX]-?([0-9.]{1,15})|\s[yY]-?([0-9.]{1,15})|\s[zZ]-?([0-9.]{1,15})')

它工作得非常好,可以检测每个轴的每个值,如果可以的话,将这些值分为不同的组。例如:position_response = "G0 X100 Y200 Z300"

^{pr2}$

但如果有没有gG0-3,就可以独立了。如果没有gG0-3,正则表达式不应该分组给出任何答案。我该怎么解决呢?在


Tags: selfreresponsepositioncompilexxyyzz
1条回答
网友
1楼 · 发布于 2024-06-16 11:19:37

我会选择命名的组和一个匹配的

import re

PosCheck = re.compile(
'(?i)^[gG0-3]{1,3}(?:\s+x-?(?P<x>[0-9.]{1,15})|\s+y-?(?P<y>[0-9.]{1,15})|\s+z-?(?P<z>[0-9.]{1,15}))*$')

for position_response in [
    "G0 X100 Y200 Z300",
    "G0 x100 z20",
    "x150 y30",
    ]:
    i = PosCheck.match(position_response)
    if i:
        print(position_response, '->', i.groupdict())
    else:
        print(position_response, '->', None)

输出:

^{pr2}$

相关问题 更多 >