Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Sql 将包含-、.$\/的字符串与正则表达式匹配_Sql_Regex_Oracle11g - Fatal编程技术网

Sql 将包含-、.$\/的字符串与正则表达式匹配

Sql 将包含-、.$\/的字符串与正则表达式匹配,sql,regex,oracle11g,Sql,Regex,Oracle11g,我试图用正则表达式匹配一个包含-、.$/的字符串,并且可能包含我还不知道的其他特殊字符。我必须匹配字符串中的前28个字符 字符串是-> 已接收-数据迁移1。单位,美国CXXX公司普通股证券证书第323248号987837股面额为1元未管理XX XX、XXXSFHIGSKF/XXXX仅为< /P> 我使用的正则表达式是[\w-,.$\/]+\s{28}.* 有没有更好的方法来匹配特殊字符 如果字符串长度小于28,我也会得到一个错误。我可以做些什么来包含范围,这样即使字符串少于28个字符,正则表达式

我试图用正则表达式匹配一个包含-、.$/的字符串,并且可能包含我还不知道的其他特殊字符。我必须匹配字符串中的前28个字符

字符串是->

已接收-数据迁移1。单位,美国CXXX公司普通股证券证书第323248号987837股面额为1元未管理XX XX、XXXSFHIGSKF/XXXX仅为< /P> 我使用的正则表达式是[\w-,.$\/]+\s{28}.*

有没有更好的方法来匹配特殊字符

如果字符串长度小于28,我也会得到一个错误。我可以做些什么来包含范围,这样即使字符串少于28个字符,正则表达式也可以工作

代码看起来像这样

Select  regexp_extract(Txn_Desc,'((([\w-,.$;!@\/%)^#<>&*(]+)\s){1,28}).*',1) as Transaction_Short_Desc,Txn_Desc
from Table x

您似乎正在寻找28个代币

试一试

这是8个令牌的结果:

Received - Data Migration 1. Units, of UNITED 
|        | |    |         |  |      |  |
1        2 3    4         5  6      7  8

你说我试图匹配字符串是什么意思。。。。我必须匹配字符串中的前28个字符?我怀疑标准字符串函数和运算符SUBSTR,比如-而不是正则表达式-可能会有所帮助,但不清楚问题出在哪里。如上所示的regexp_extract帮助我获得了所需的结果。然而,有没有更好的方法来匹配特殊字符的正则表达式模式,而不是我在上面的代码中所显示的我不理解的字符。Oracle中没有regexp_提取。您是舒尔吗?您使用的是Oracle,而不是其他产品?此外,你应该能够用公共语言表达需求,而不是使用代码-不要让读者猜测代码的意图,告诉他们你的需求是什么。欢迎:-不要忘记接受答案。
([^ ]+ +){0,28}
Received - Data Migration 1. Units, of UNITED 
|        | |    |         |  |      |  |
1        2 3    4         5  6      7  8