gpt4 book ai didi

python - 为什么正前瞻有效但负前瞻无效?

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:47 24 4
gpt4 key购买 nike

首先,正则表达式需要同时适用于 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*(?:,?\.?)))\b(?![.,]?\d|\s?x)

Updated RegEx Demo

  • 重要的是最后使用单词边界以避免匹配部分数字(正则表达式匹配到前面数字的原因)

  • 还在否定先行条​​件中包含 [.,]?\d,这样匹配就不会在最后一个逗号之前的位置结束。


这个更短(更高效)的正则表达式也适用于 OP:

(\d+(?:[,.]\d+)*)\s*\/\s*(\d+(?:[,.]\d+)*)\b(?![.,]?\d|\s?x)

RegEx Demo 2

关于python - 为什么正前瞻有效但负前瞻无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com