我有一根很大的绳子,形状是

Anschlüsse/Schnittstellen=(USB 3.0)|Bildschirmgröße=59,9 cm (23,6 Zoll)|Bluetooth=Bluetooth 4.0|

我需要从Bildschirmgröße=59,9 cm (23,6 Zoll)|个中抽取23,6

我试过了

/(?<=Bildschirmgröße=)(?:.+?\()(.*?)(?:\))(?=\|)

但这将返回2个匹配项

59,9 cm (23,6 Zoll)
23,6 Zoll

在我的SQL查询中,我只得到第一个结果,而不是第二个结果.

try 仅通过以下方式获得正确的匹配

(?<=Bildschirmgröße=)(?:.+?\()(\(.*?\))(?:\))(?=\|)

不返回任何内容/空?

推荐答案

你得到的实际上不是两个匹配值,而是整个匹配值和第一组的值.

为了只获得UOM值,您可以使用以下符合PCRE的模式(因为它的regex函数后面有Exasol uses PCRE):

Bildschirmgröße=[^(]*\(\K[^()]+

请看regex demo.

要只获取号码,您可以使用

Bildschirmgröße=[^(]*\(\K\d+(?:,\d+)?

请参见this regex demo.

一百:

  • Bildschirmgröße=-文字文本
  • [^(]*-(以外的零个或更多字符
  • \(-A (字符
  • \K-一个匹配重置运算符,它从整个匹配内存缓冲区中丢弃到目前为止匹配的文本
  • [^()]+-()以外的一个或多个字符
  • \d+(?:,\d+)?-一个或多个数字,然后是可选的,和一个或多个数字.注您可以对计量单位使用更宽松、同时更通用的提取模式,如\d[\d,.]*\s+\w+(见demo).

Sql相关问答推荐

如何重用表值用户定义函数调用的结果?

SQL:如何将相应位置的两个数组中的元素组合在一起

导出部分条形码字符串GS1-128

返回UPSERT中的旧行值

如何从Spark SQL的JSON列中提取动态数量的键值对

不存在记录的国外关键点

配置单元查询失败:无法识别';附近的输入;LEFT'';(select子句中的';';col'

如何根据 SQL 中的阈值标记一个集群中的所有值?

根据要过滤的列的值进行联接和分组

用户定义的标量值函数是否仍然会阻止并行性?

计算 ID 满足条件的次数

BigQuery导航函数计算ID

SQL中如何转置表格 UNPIVOT是唯一的 Select 吗?

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

根据行号将列转置为没有任何id或键列的行

String_Split 多列

如何防止 SQL 中的负收入值并将其重新分配到接下来的月份?

条件意外地显着降低性能的地方

在 MS Access 中连接相关记录

Snowflake SQL group-by 的行为不同,具体取决于列是按位置引用还是按别名引用