Regex 仅在匹配第一个模式后才匹配模式的正则表达式
我试图仅当在Oracle中使用Regex 仅在匹配第一个模式后才匹配模式的正则表达式,regex,oracle,plsql,Regex,Oracle,Plsql,我试图仅当在Oracle中使用RegEx_Like和RegExp_Substr首先匹配另一个模式时,才从字符串返回匹配,但我得到的结果不一 以下是我拥有的数据样本以及我试图从中返回的内容: +-----------------------------+---------+ | Data | Goal | +-----------------------------+---------+ | 201301-P706466 JFK CLASSICS
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,因为没有提到,所以我尝试删除三个字母的长度。