【发布时间】:2020-02-05 03:25:40
【问题描述】:
首先,正则表达式需要同时适用于 python 和 PCRE(PHP)。我试图忽略正则表达式模式后跟字母“x”以区分维度和下面给定示例中的“数字/数字”等字符串:
dummy word 222/2334; Ø14 x Ø6,33/523,23 x 2311 mm
从这里,我试图提取222/2334,但不是6,33/523,23,因为这部分实际上是维度的一部分。到目前为止,我想出了这个正则表达式
((\d*(?:,?\.?)\d*(?:,?\.?))\s?\/\s?(\d*(?:,?\.?)\d*(?:,?\.?)))(?=\s?x)
它可以提取我不想提取的内容,它看起来像this。如果我将积极的前瞻性更改为消极的,它会捕获它们两个,除了来自6,33/523,23 的最后一个“3”。它看起来像this。我怎样才能只捕获222/2334?我在这里做错了什么?
期望的输出:
222/2334
我得到了什么
222/2334 6,33/523,2
【问题讨论】:
-
我的意思是......它并不漂亮,但适用于两种语言:
(?!\d+(?:[,.]\d+)?\s?\/\s?\d+(?:[,.]\d+)?(?=\s?x))(\d+(?:[,.]\d+)?)\s?\/\s?(\d+(?:[,.]\d+)?)。或者,您可以在 python 中使用(\d+(?:[,.]\d+)?+)\s?\/\s?(\d+(?:[,.]\d+)?+)(?!\s?x)和regex模块来支持所有格量词 -
哇...这么快?你能解释一下吗? @ctwheels
-
最后一位数字与正则表达式
\s?x不匹配,因此当它与该数字之前的数字匹配时满足负前瞻。 -
根据你的具体例子,
(^| )(\d+)\/(\d+)($|;)可以工作
标签: python regex python-3.x