2

我有这个正则表达式:

(\d+\.?\d*)(?=.*)(\d+\.?\d*)|(\d+\.?\d*).+diam

但是,它并没有完全发挥作用。它正在拾取“24K 金” 它应该只拾取 2 个有效数字,中间有一个 x。

当前正则表达式输出

编辑:

例子:

输入:

40cm x 100cm

2.3 x 8.6

height: 100cm x width: 200.2cm

25K Gold

60 diam

50 diam

输出:

40, 100

2.3,8.6

100,200.2

60

50
4

2 回答 2

1

对于这个单一编号的文本,例如:

25K金

60 直径

50 直径

/(\d+(\.\d+)?)/

对于两个编号的文本,例如:

40 厘米 x 100 厘米

2.3 x 8.6

高:100cm x 宽:200.2cm

/(\d+(\.\d+)?).*?x.*?(\d+(\.\d+)?)/

因此,您的第一个和第二个号码将在第一个和第二个捕获组中。

于 2021-06-22T04:20:08.547 回答
0

要获取介于两者之间的 x 值而不是 match 25K Gold,您可以使用60 diam50 diam

\b(\d+(?:\.\d+)?)[^\dxX\n]*[xX][^\dxX\n]*(\d+(?:\.\d+)?)

模式匹配:

  • \b防止部分匹配的单词边界
  • (\d+(?:\.\d+)?)捕获组 1,匹配 1+ 位与可选的小数部分
  • [^\dxX\n]*[xX][^\dxX\n]*可选择匹配除xor之外的任何字符X,然后匹配x
  • (\d+(?:\.\d+)?)捕获组 2,匹配 1+ 位与可选的小数部分

正则表达式演示

于 2021-06-22T06:46:15.070 回答