数字的筛选 正则表达
想筛选一些坐标里的数字(有些含负号'-'), 有没有什么正则可以方便的筛选的到,坐标如下:X-018702Y032874
X025185Y-043027G85X025185Y-0422
X025185Y-043027G84X025185
X026772
Y-043027
R8M02X025185
筛选结果如下:
-018702, 032874
025185, -043027, 025185, -0422
025185, -043027
026772
-043027
025185 666
import re
lst=['X-018702Y032874','X025185Y-043027G85X025185Y-0422','X025185Y-043027G84X025185','X026772','Y-043027','R8M02X025185']
result=[]
for string in lst:
result.append(re.findall(r'(?:X|Y)(-?\d+)',string))
for each in result:
print(*each,sep=',') R8M02X这个是不是有点犯规 python的re模块可是不支持不定长环视的 我自己写了一个, 但感觉有点啰嗦, 由于本人还没有学到正则表达, re模块粗略的看了一下, 请指教:
zb = ['X-018702Y032874',\
'X025185Y-043027G85X025185Y-0422',\
'X025185Y-043027G84X025185',\
'X026772',\
'Y-043027',\
'R8M02X025185',\
'R8M02Y025185']
for i in zb:
if 'G84' in i:
shu = i
elif 'G85' in i:
shu = i.replace('G85','')
shu = shu
elif i == 'R' and 'M02' in i:
if 'X' in i:
shu = i
if 'Y' in i:
shu = i
else:
shu = i
num = re.sub('',',',shu)
print(num) 本帖最后由 kogawananari 于 2020-9-28 10:13 编辑
import re
print(re.findall(r'(?<=X|Y)-?\d+', s))
环视这样也行 【R8M02X】保证最后一个是X就行{:5_102:}
刚才忘记负数了 改一下 sunrise085 发表于 2020-9-28 09:31
谢谢, 可以实现, 就是能不能过滤掉第三行"X025185Y-043027G84X025185"后面的"G84X025185", G84后面的坐标不要. sunrise085 发表于 2020-9-28 09:31
另外, 正则中的r'(?:X|Y)(-?\d+)'与另一用户中的r'(?<=X|Y)-?\d+', 写法不一样, 结果是一样的, 有什么区别吗? kogawananari 发表于 2020-9-28 09:57
环视这样也行 【R8M02X】保证最后一个是X就行
刚才忘记负数了 改一下
正则中的r'(?<=X|Y)-?\d+'与另一用户中的r'(?:X|Y)(-?\d+)', 写法不一样, 结果是一样的, 有什么区别吗? Nate_2020 发表于 2020-9-29 14:33
正则中的r'(?
我这是环视 他那是分组{:10_277:} 这几天抽空把正则学了一下, 在前面2位的基础上找到可以忽略G84后面的坐标, 如下.
r'(?<!G84)(?:X|Y)(-?\d*)'
页:
[1]