Regex 为什么这种比较会再次出现?(正则表达式)

Regex 为什么这种比较会再次出现?(正则表达式),regex,Regex,我对第二个比较感到困惑。这不是意味着一个以[a-dXYZ]开头,以[a-dXYZ]结尾的字符串吗 还是说一个以[a-dXYZ]开头,以[a-dXYZ]结尾,长度为1的字符串?如果这是真的,使用^和$符号,如“^….$”(最左边和最右边)消除所有子字符串,并仅分析整个字符串-对吗 注意:这不是一个我该如何回答的问题。我想了解一种因果关系。^[a-dXYZ]$将恰好匹配一个字符:a,b,c,d,X,Y,Z,并且是第一个字符和最后一个字符。所以你的第二个观察结果很直接 ^表示输入开始,$表示输入结束

我对第二个比较感到困惑。这不是意味着一个以[a-dXYZ]开头,以[a-dXYZ]结尾的字符串吗

还是说一个以[a-dXYZ]开头,以[a-dXYZ]结尾,长度为1的字符串?如果这是真的,使用^和$符号,如“^….$”(最左边和最右边)消除所有子字符串,并仅分析整个字符串-对吗


注意:这不是一个我该如何回答的问题。我想了解一种因果关系。

^[a-dXYZ]$
将恰好匹配一个字符:
a
b
c
d
X
Y
Z
,并且是第一个字符和最后一个字符。所以你的第二个观察结果很直接

^
表示输入开始,
$
表示输入结束

您可以使用
*
重复0次或更多次,或使用
+
重复1次或更多次:

1)mysql> SELECT 'aXbc' REGEXP '[a-dXYZ]';                 -> 1
2)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]$';               -> 0    
3)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]?$';              -> 0   // 0 or 1
4)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';              -> 1   // 1 or more
5)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]*$';              -> 1   //0 or more
如果要匹配以
[a-dXYZ]
开头和结尾的字符串,可以使用以下命令:

^[a-dXYZ]+$

在一些正则表达式实现中,可以使用<代码> M>代码>修饰符,这将使<代码> ^ 和<代码> $>代码>匹配行的开始和结束,RATER比输入,考虑下面的Perl片段:

^[a-dXYZ].*[a-dXYZ]$
#        ^ Match anything zero or more times
它将仅替换以下一致的所有线路:

s/^1+$/_/gm

^[a-dXYZ]$
将恰好匹配一个字符:
a
b
c
d
X
Y
Z
,并且是第一个字符和最后一个字符。所以你的第二个观察结果很直接

^
表示输入开始,
$
表示输入结束

您可以使用
*
重复0次或更多次,或使用
+
重复1次或更多次:

1)mysql> SELECT 'aXbc' REGEXP '[a-dXYZ]';                 -> 1
2)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]$';               -> 0    
3)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]?$';              -> 0   // 0 or 1
4)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';              -> 1   // 1 or more
5)mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]*$';              -> 1   //0 or more
如果要匹配以
[a-dXYZ]
开头和结尾的字符串,可以使用以下命令:

^[a-dXYZ]+$

在一些正则表达式实现中,可以使用<代码> M>代码>修饰符,这将使<代码> ^ 和<代码> $>代码>匹配行的开始和结束,RATER比输入,考虑下面的Perl片段:

^[a-dXYZ].*[a-dXYZ]$
#        ^ Match anything zero or more times
它将仅替换以下一致的所有线路:

s/^1+$/_/gm

$[a dxyz ] $它寻找1个长度字符串作为一个整体,不考虑子串?它将匹配一个1字符长的输入。AM允许在字符串的中间使用^ $符号,如果^ ^ [b](.*)(^ [k] $)(.*)[b] $返回BAAKAB的真值。或者它取决于在哪里使用?(oracle sql、mysql、java)@BurakKarasoy,正如我之前所说:
^和$将匹配输入的开头和结尾
。因此,在匹配的中间使用这些元字符会使匹配无效。这个问题的答案使我困惑,也感谢你的时间。^ [aDXYZ ] $它寻找1个长度字符串作为一个整体,不考虑子串。它将匹配一个1字符长的输入。[B] (.*)(^[K]$)(.[B]$”使用BAAKAAB返回true。或者它取决于在何处使用?(oracle sql、mysql、java)正如我前面所说的:@代码> ^和$将匹配输入< /代码>的开始和结束。因此,在匹配的中间使用这些元字符将使匹配无效。这个问题的答案使我困惑,也感谢您的时间。