Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅在匹配第一个模式后才匹配模式的正则表达式_Regex_Oracle_Plsql - Fatal编程技术网

Regex 仅在匹配第一个模式后才匹配模式的正则表达式

Regex 仅在匹配第一个模式后才匹配模式的正则表达式,regex,oracle,plsql,Regex,Oracle,Plsql,我试图仅当在Oracle中使用RegEx_Like和RegExp_Substr首先匹配另一个模式时,才从字符串返回匹配,但我得到的结果不一 以下是我拥有的数据样本以及我试图从中返回的内容: +-----------------------------+---------+ | Data | Goal | +-----------------------------+---------+ | 201301-P706466 JFK CLASSICS

我试图仅当在Oracle中使用
RegEx_Like
RegExp_Substr
首先匹配另一个模式时,才从字符串返回匹配,但我得到的结果不一

以下是我拥有的数据样本以及我试图从中返回的内容:

+-----------------------------+---------+ | Data | Goal | +-----------------------------+---------+ | 201301-P706466 JFK CLASSICS | P706466 | | 201301-706466 WRI CLASSICS | 706466 | | 201301 706466 JFK CLASSICS | 706466 | | 201301 P706466 WRI CLASSICS | 706466 | | 201910-MLB-CVG4 | NULL | | 201209-JFK CLASSICS | NULL | | 201203-WRI CLASSICS | NULL | | 201209 JFK CLASSICS | NULL | | 201203 WRI CLASSICS | NULL | +-----------------------------+---------+ 我尝试了不同版本的,但在regex101上,但正如您在导航到链接后看到的,它比我需要的匹配更多


我想我可能是走错了路,这就是为什么我在这里。那么,什么样的模式适合我的案例,并且是最有效的

您可以使用此正则表达式来实现问题中提到的目标列:

^\d{6}[-\s]{1}(\d{6}|P\d{6})
演示:

您可以使用此正则表达式来实现问题中提到的目标列:

^\d{6}[-\s]{1}(\d{6}|P\d{6})
演示:

很近,但没有雪茄烟。但是,将其修改为以下工作:
^\d{6}[-\s]{1}(\d{6}|(P)\d{6})
。请看:我无法根据您的数据判断开头是否只有字母P,因为没有提到,所以我尝试删除这三个字母的长度。这很接近,但没有雪茄。但是,将其修改为以下工作:
^\d{6}[-\s]{1}(\d{6}|(P)\d{6})
。请看:我无法根据您的数据判断开头是否只有字母P,因为没有提到,所以我尝试删除三个字母的长度。