求助:编写正则表达式提取文本中加粗的长度值
正则表达式提取文本中加粗的长度值
示例文本:
u01200.037.0225 3/8 2.1/4 25 + normen asme b18.2.1 bs ≈1768 sechskantschrauben unc asme b18.2.1 stahl
u01200.037.0200 3/8 2 inch 25 + normen asme b18.2.1 bs ≈1768 sechskantschrauben unc asme b18.2.1 stahl
u01200.037.0475 3/8 3/4 10 + normen asme b18.2.1 bs ≈1768 sechskantschrauben unc asme b18.2.1
04400.160.030 m16 30.0 preis anzeigen 50 + normen din ≈6921 ripp
fnlu1100095 d931 a2 6k schraube lubo m10x95/
你尝试的正则表达式:
.*d+[:|,]?\s?[a-z][0-9]|[\/][0-9]|x\s?(\d+[1-9]\s?.{0}*).*
解决方案
所有目标长度值都包裹在<strong>和</strong>标签之间,直接匹配这个区间的内容最直接可靠,正则表达式如下:
<strong>(.*?)</strong>
说明:
<strong>:匹配加粗起始标签(.*?):非贪婪模式匹配标签内的所有内容(即需要提取的长度值),?避免匹配跨多个标签的冗余内容</strong>:匹配加粗结束标签
使用示例(Python):
import re text = """u01200.037.0225 3/8 <strong>2.1/4</strong> 25 + normen asme b18.2.1 bs ≈1768 sechskantschrauben unc asme b18.2.1 stahl u01200.037.0200 3/8 <strong>2 inch</strong> 25 + normen asme b18.2.1 bs ≈1768 sechskantschrauben unc asme b18.2.1 stahl u01200.037.0475 3/8 <strong>3/4</strong> 10 + normen asme b18.2.1 bs ≈1768 sechskantschrauben unc asme b18.2.1 04400.160.030 m16 <strong>30.0</strong> preis anzeigen 50 + normen din ≈6921 ripp fnlu1100095 d931 a2 6k schraube lubo m10x<strong>95</strong>/""" results = re.findall(r'<strong>(.*?)</strong>', text) for res in results: print(res)
运行后输出:
2.1/4 2 inch 3/4 30.0 95
内容的提问来源于stack exchange,提问作者Angy
相关产品推荐
相关产品推荐

