PostgreSQL:提取字符串中第一组括号内的值
提取字符串中第一对括号内内容的正则解决方案
你之前用的正则\((.+)\)之所以出错,是因为+属于贪婪匹配模式,会尽可能匹配最多的字符,直到找到最后一个右括号,所以才会把16) and Brian (14都包含进去。这里给你两个更优的正则方案:
方案1:非贪婪匹配模式
使用+?(非贪婪的加号),它会在遇到第一个右括号时就停止匹配:
substring('Ana (16) and Brian (14) are my children.' from '\((.+?)\)')
执行后就能得到目标结果'16'。
方案2:排除型字符组匹配
如果能确定括号内不会包含右括号,用[^)](匹配除右括号之外的任意字符)更严谨,逻辑也更直观:
substring('Ana (16) and Brian (14) are my children.' from '\(([^)]+)\)')
这个写法同样能精准提取第一对括号内的'16',避免非贪婪模式的潜在歧义。
这两种正则方案都比strpos与substring的组合更简洁高效,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Iniyavan
相关产品推荐
相关产品推荐

