Regex 匹配“;81“;在;630.81.11“;使用正则表达式

Regex 匹配“;81“;在;630.81.11“;使用正则表达式,regex,Regex,我想匹配“630.81.11”中的“81”。我一直在使用\.[0-9]*\.,其中包括点。更新:在看到您试图解决的问题后,我建议不要使用正则表达式 /^[0-9]+\.([0-9]+)\.[0-9]+$/ 它用于PostGreSQL查询。我需要按三个部分进行排序。比如: 例如,您可以使用split\u part,而不是使用正则表达式: SELECT plannr FROM table1 ORDER BY split_part(plannr, '.', 1)::integer,

我想匹配“630.81.11”中的“81”。我一直在使用
\.[0-9]*\.
,其中包括点。

更新:在看到您试图解决的问题后,我建议不要使用正则表达式

/^[0-9]+\.([0-9]+)\.[0-9]+$/

它用于PostGreSQL查询。我需要按三个部分进行排序。比如:

例如,您可以使用
split\u part
,而不是使用正则表达式:

SELECT plannr
FROM table1
ORDER BY
    split_part(plannr, '.', 1)::integer,
    split_part(plannr, '.', 2)::integer,
    split_part(plannr, '.', 3)::integer;
结果:

"2.2.3"
"2.10.3"
"2.10.20"
"10.1.4"
"630.81.11"
测试数据:

CREATE TABLE table1 (plannr VARCHAR(100) NOT NULL);
INSERT INTO table1 (plannr) VALUES
('630.81.11'),
('2.2.3'),
('2.10.3'),
('2.10.20'),
('10.1.4');

原始答案:如果正则表达式引擎包含固定长度的lookaheads和lookbehinds,则可以执行以下操作:

(?<=\.)[0-9]+(?=\.)

(?更新:看到您试图解决的问题后,我建议不要使用正则表达式


它用于PostGreSQL查询。我需要按三部分进行排序。类似于:

例如,您可以使用
split\u part
,而不是使用正则表达式:

SELECT plannr
FROM table1
ORDER BY
    split_part(plannr, '.', 1)::integer,
    split_part(plannr, '.', 2)::integer,
    split_part(plannr, '.', 3)::integer;
结果:

"2.2.3"
"2.10.3"
"2.10.20"
"10.1.4"
"630.81.11"
测试数据:

CREATE TABLE table1 (plannr VARCHAR(100) NOT NULL);
INSERT INTO table1 (plannr) VALUES
('630.81.11'),
('2.2.3'),
('2.10.3'),
('2.10.20'),
('10.1.4');

原始答案:如果正则表达式引擎包含固定长度的lookaheads和lookbehinds,则可以执行以下操作:

(?<=\.)[0-9]+(?=\.)

(?您可以将感兴趣的部分包含在一个组中,然后将其提取。因此,类似“\([0-9]*)\”的部分表示一个组。

您可以将感兴趣的部分包含在一个组中,然后将其提取。因此,类似“\([0-9]*)\”的部分表示一个组

Pattern pat = Pattern.compile("\\.(\\d+)\\.");
String str = "630.81.11";
Matcher matcher = pat.matcher(str);

while (matcher.find())
{
    System.out.println(matcher.group(1));
}
我已经在Java中进行了测试,结果如下:

81

我已经在Java中进行了测试,结果如下:

81


您使用的是哪种语言?您使用的是什么函数调用?它用于PostGreSQL查询。我需要按三部分进行排序。类似于:按子字符串排序(plannr从“^[0-9]*”)::整数,子字符串(plannr从“\.[0-9][0-9]\”)::整数,子字符串(plannr从“[0-9]*$”)::integer中间部分是问题所在-无法将其转换为带点的整数。您使用的是哪种语言?您使用的是什么函数调用?它用于PostGreSQL查询。我需要按三个部分排序。例如:按子字符串排序(从“^[0-9]*”开始的plannr)::整数,子字符串(从“\.[0-9][0-9]\”开始的plannr::整数,子字符串(plannr来自“[0-9]*$”)::整数中间部分是问题所在-不能用点将其转换为整数。