- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
首先,正则表达式需要同时适用于 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)
重要的是最后使用单词边界以避免匹配部分数字(正则表达式匹配到前面数字的原因)
还在否定先行条件中包含 [.,]?\d
,这样匹配就不会在最后一个逗号之前的位置结束。
这个更短(更高效)的正则表达式也适用于 OP:
(\d+(?:[,.]\d+)*)\s*\/\s*(\d+(?:[,.]\d+)*)\b(?![.,]?\d|\s?x)
关于python - 为什么正前瞻有效但负前瞻无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276222/
我有一个看起来像这样的字符串: text = "9) 9 的文本\r\n10) 10 的文本\r\n11) 11 的文本\r\n12) ...\r\n123) 123 的文本" 我正在尝试将其拆分如下
下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月
我有一个使用正则表达式回顾的 string.replace() 函数。 myString.replace(/(?
我是一名优秀的程序员,十分优秀!