gpt4 book ai didi

MySQL正则表达式匹配问题

转载 作者:行者123 更新时间:2023-11-29 02:53:04 25 4
gpt4 key购买 nike

我需要匹配以下字符串

'Brown & Brown' 'Brown and Brown' 'Brown&Brown' 'B & B' 'B and B' 'B&B'

我可以得到

'Brown & '

匹配使用

SELECT 'Brown & ' REGEXP '^(b|brown)[:space:]*(and|[.ampersand.])[:space:]*'

但是当我尝试

SELECT 'Brown & Brown' REGEXP '^(b|brown)[:space:]*(and|[.ampersand.])[:space:]*(b|brown)'

SELECT 'Brown & Brown' REGEXP '^(b|brown)[:space:]*(and|[.ampersand.])[:space:]*(b|brown)$'

它不会匹配。最后一段我做错了什么?

最佳答案

这个有效:

SELECT 'Brown & Brown' REGEXP '^(b|brown)[[:space:]]*(and|[[.ampersand.]])[[:space:]]*(b|brown)$'

特殊字符类必须放在双方括号中,例如[[:space:]] 而不是 [:space:]


SELECT 'Brown & ' REGEXP '^(b|brown)[:space:]*(and|[.ampersand.])[:space:]*'; 起作用的原因:

  • [:space:] 被视为包含字符 :, s, p, a, c, e 的字符类。
  • [.ampersand.] 被视为包含字符 ., a, m, p, e, r, s, a, n, d 的字符类.
  • 您允许这些字符类(* 量词)出现零重复,因此实际匹配的字符串是第一个 Br
  • 匹配如下:匹配字符串的开头,然后(b|brown)匹配B[:space:]*匹配空字符串,(and|[.ampersand.]) 匹配 r(它在 [.ampersand] 字符类中的字符中),然后 [:space:]* 匹配空字符串。

关于MySQL正则表达式匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33575107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com