gpt4 book ai didi

正则表达式查找字符串中的整数和小数

转载 作者:行者123 更新时间:2023-12-02 12:27:34 26 4
gpt4 key购买 nike

我有一个像这样的字符串:

$str1 = "12 ounces";
$str2 = "1.5 ounces chopped;

我想从字符串中获取金额,无论它是否为小数(12 或 1.5),然后获取紧邻的前一个测量值(盎司)。

我能够使用相当基本的正则表达式来获取测量结果,但是获取小数/整数给我带来了问题。

感谢您的帮助!

最佳答案

如果你只是想抓取数据,你可以使用松散的正则表达式:

([\d.]+)\s+(\S+)
  • ([\d.]+):[\d.]+ 将匹配严格的数字序列和 . (这意味着 4.5.6.... 将匹配,但这些情况并不常见,这只是为了抓取数据),括号表示我们将捕获匹配的文本。这里的.在字符类[]内部,所以不需要转义。

  • 后跟任意空格 \s+ 和非空格字符 \S+ 的最大序列(由于贪婪量词)(非空格实际上是非-空格:它将匹配 Unicode 中的几乎所有内容,除了空格、制表符、换行符、回车符)。

您可以获取第一个捕获组中的数字,以及第二个捕获组中的单位。

你可以对数字严格一点:

(\d+(?:\.\d*)?|\.\d+)\s+(\S+)
  • 唯一的变化是(\d+(?:\.\d*)?|\.\d+),所以我只解释这部分。这有点严格,但是否更严格更好取决于输入域和您的要求。它将匹配整数 34、带小数部分的数字 3.40000 并允许 .534. 情况通过。它将拒绝包含过多 . 的号码,或仅包含 . 的号码。 | 充当 OR,分隔 2 个不同的模式:\.\d+\d+(?:\.\d*)?
  • \d+(?:\.\d*)?:这将匹配并(隐式)断言整数部分中至少一位数字,后跟可选 . (需要用 \ 转义,因为 . 表示任何字符)和小数部分(可以是 0 个或多个数字)。可选性由末尾的 ? 指示。 () 可用于分组和捕获 - 但如果不需要捕获,则 (?:) 可用于禁用捕获(节省内存)。
  • \.\d+:这将匹配 .78 等大小写。它匹配 . 后跟至少一个(由 + 表示)数字。

如果您想确保从输入字符串中获得有意义的内容,这不是一个好的解决方案。您需要先定义所有预期单位,然后才能编写仅捕获有效数据的正则表达式。

关于正则表达式查找字符串中的整数和小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500482/

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