Sql 解码这个正则表达式

Sql 解码这个正则表达式,sql,regex,string,oracle,Sql,Regex,String,Oracle,我试图理解下面的内容,但似乎没有得到正则表达式的最后一部分,它包含{1,40}。总的来说,我知道该模式试图匹配特殊字符和其他内容(即{1,40}) regexp\u like()检查字符串是否与作为第二个参数提供的regex匹配 您的regexp看起来像^[…]{1,40}$ ^是字符串的开头,$是结尾,因此整个字符串必须与正则表达式匹配 […]是一个字符类,它包含一组字符代码点。字符串的所有字符必须属于该列表(禁止使用任何其他字符)。你需要检查它们对应的是什么:是你的朋友。对于第一个代码点:

我试图理解下面的内容,但似乎没有得到正则表达式的最后一部分,它包含
{1,40}
。总的来说,我知道该模式试图匹配特殊字符和其他内容(即{1,40})

regexp\u like()
检查字符串是否与作为第二个参数提供的regex匹配

您的regexp看起来像
^[…]{1,40}$

  • ^
    是字符串的开头,
    $
    是结尾,因此整个字符串必须与正则表达式匹配

  • […]
    是一个字符类,它包含一组字符代码点。字符串的所有字符必须属于该列表(禁止使用任何其他字符)。你需要检查它们对应的是什么:是你的朋友。对于第一个代码点:

  • 最后,
    {1,40}
    是一个量词:字符串的长度必须至少为1,最多为40

它是一个量词。前面的标记(这里是一个字符类)将重复1到40次。“| |”正在使我推迟{1,40}之前的标记,因此我无法确认我的理解。对我来说,这似乎是一种病态。那么这仍然是前一个字符类的量词吗?我不想挑战,但我仍然有这个疑问。
|
是SQL字符串连接运算符-它不是regexp的一部分。
|
是Oracle中的字符串连接
“[a-z]”| |“{1,40}”
相当于Java中的
“[a-b]”+“{1,40}”
“[a-b]”。PHPamazing中的“{1,40}”
。我现在完全明白了。谢谢大家的快速解决
regexp_like(COLUMN,'^['||UNISTR('\0020')||'-'||UNISTR('\0060')||UNISTR('\007B')||UNISTR('\007D')||UNISTR('\007E')||UNISTR('\00C0')||'-'||UNISTR('\00DF')||']'||'{1,40}$')
    \0020    space
    \0060    grave accent
    \007B    left curly bracket