Python-正则表达式模式

时间:2019-01-23 12:46:06

标签: python regex

我正在尝试创建将使用12X15x2这样的模式的函数,并从字符串中提取它,如下所示:“ STACKED STONE 52X36X72 AREAWELL BOMAN KEMP” 因此,模式是绞盘尺寸通常是一个或多个数字,“ X”比“ X”多一个或多个数字,并以一个或多个数字结束。

这是我尝试过的:

# Importing dependencies
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import re

# Setting the test string
s = "STACKED STONE 52\"X36\"X72\" AREAWELL BOMAN KEMP"
# Test the pattern on a s string
result = re.sub(r"[a-z ]", "", s , flags=re.I) 
print(result)

结果是我得到52“ 36” 72,它只是用什么都代替了字符串中的字母。

根据我的研究,我认为我必须使用编译功能并定义模式以读取数字字母X数字字母X数字,因此类似[1-9],“ X”,[1-9],“ X ”,[1-9]

有什么想法如何构造它以及使用re的哪个功能?

我在下面尝试了几种解决方案,但是由于我实际上不只一种格式,因此我没有捕获每个实例。这是我要考虑的所有格式:

 2x5x6 
 2"x5"6"
 2'x5'6'
 2"x5'x6
 1/2"x5/8"x7'

因此,每个数字都可以是整数,也可以像1/2,并且每个数字都可以以醚英寸或英尺的形式出现。 可以单行写这个,还是我必须创建几个函数来容纳每个函数?

1 个答案:

答案 0 :(得分:2)

这应该有帮助。

import re

s = "STACKED STONE 52X36X72 AREAWELL BOMAN KEMP"
m = re.search(r"\b(\d+X\d+X\d+)\b", s, flags=re.I)
if m:
    print(m.group(1))

输出:

52X36X72