Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 Oracle正则表达式替换为负的前向/后向_Regex_Oracle - Fatal编程技术网

Regex Oracle正则表达式替换为负的前向/后向

Regex Oracle正则表达式替换为负的前向/后向,regex,oracle,Regex,Oracle,我正在编写一个PL/SQL Oracle过程,该过程在列中查找可能的客户编号。客户编号的长度为7位,可以加前缀或后缀,并带有任意数量的字符。但是有些值包含>7位数字,在这种情况下,我想忽略它们。因此,“A/C 1234567”和“Cust1234567B”应返回客户编号的匹配项,1234567,但“01234567”和“123456789”不应返回 我使用的是\d{7},但这将返回所有示例的匹配项,因此我正在寻找类似于(?)的内容,但不支持负向前看和向后看。如果没有向后看和向后看断言,您可以尝试

我正在编写一个PL/SQL Oracle过程,该过程在列中查找可能的客户编号。客户编号的长度为7位,可以加前缀或后缀,并带有任意数量的字符。但是有些值包含>7位数字,在这种情况下,我想忽略它们。因此,“A/C 1234567”和“Cust1234567B”应返回客户编号的匹配项,1234567,但“01234567”和“123456789”不应返回


我使用的是
\d{7}
,但这将返回所有示例的匹配项,因此我正在寻找类似于
(?)的内容,但不支持负向前看和向后看。如果没有向后看和向后看断言,您可以尝试任何建议?

(^|\D)\d{7}(\D|$)

我也面临同样的问题,我所做的只是

NOT regexp_like(<pattern_you_want_to_negate>)
不是regexp_like()

(?:^ |\D)\D{7}(?:\D}$)
?@zerkms:我想你应该把它作为一个答案发布出来。:-)试试下面的方法:从DUAL WHERE REGEXP_LIKE('1234567','(?:^ |\D)\D{7}(?:\D}$)中选择'Matched'。。。不返回匹配在我的测试中,我发现它没有返回我所需要的内容,例如,“Cust1234567B”返回“t1234567B”。因此,我用另一个REGEXP_SUBSTR(REGEXP_SUBSTR('cus1234567b','(?:^ |\D)\D{7}(?:\D |$),'\D{7}')来包围它,只需拉出7位数字。如果原始文件中存在第一个和最后一个非数字字符,是否有办法排除返回这些字符?@Laurence:如果oracle支持
?:
,您记得我们应该删除这些字符