Regex 用于在括号前提取数字的正则表达式

Regex 用于在括号前提取数字的正则表达式,regex,hive,hiveql,Regex,Hive,Hiveql,我有一根像下面这样的线。。我只想提取()之前的所有数字,直到字符开始 12xxxx12345(XXYYZZ) XXYY只是字符的占位符 我可以使用下面的表达式提取开括号()之前的数据。但我不知道如何单独提取数字 ^[^\(]* var x=“12XYXXX12345(XXYYZZ)”; console.log(x.match(/^[^\(]*/)[0]。match(/\d/g)。join(“”); 或 好的,现在,即使对你来说也行。你能提供你使用的正则表达式的风格吗?这个问题我不清楚。XYX

我有一根像下面这样的线。。我只想提取
)之前的所有数字,直到字符开始

12xxxx12345(XXYYZZ)

XXYY只是字符的占位符

我可以使用下面的表达式提取开括号
)之前的数据。但我不知道如何单独提取数字

^[^\(]*
var x=“12XYXXX12345(XXYYZZ)”;
console.log(x.match(/^[^\(]*/)[0]。match(/\d/g)。join(“”);


好的,现在,即使对你来说也行。你能提供你使用的正则表达式的风格吗?这个问题我不清楚。XYXXX占位符是否表示更多的数字?如果不是,你想提取12、12345或1212345吗?另外,是否总是有2个数字除以一个字母单词,还是可以是
1x2xy3之类的(…
?@PeterA.Schneider我只想要12345..XYXXX都是characters@WiktorStribiżew your code提取了所有数字..我只需要字符和之间的数字(再次阅读您的问题:您说
^[^\(]*
几乎可以工作,但您只需要数字。那么,表达一下:
[0-9]*(
。您只需省略锚点
^
。您还可以要求左侧有一个非数字:
[^0-9][0-9]*(
。生成的字符串将有一个无关字符(非数字)在实际数字之前,括号作为最后一个字符。删除带有字符串操作的数字很简单,但是您也可以定义一个只包含该数字的组(使用转义括号):
[^0-9]\([0-9]*\)(
并检索该组。我在配置单元查询中使用正则表达式,因此匹配条件不起作用。有没有办法嵌套正则表达式查询?您看到答案了吗?
hive> select regexp_extract ('12XYXXX12345(XXYYZZ)','\\d+(?=\\()',0);
OK
12345
hive> select regexp_extract ('12XYXXX12345(XXYYZZ)','(\\d+)\\(',1);
OK
12345