Presto SQL:如何提取abc_后的所有目标子字符串?
解决方法
你之前的正则因为贪婪匹配和缺少单词边界限制,导致提取了第一个abc_后的所有内容。要实现只提取每个独立abc_前缀后的数字,用下面的正则:
正确的正则表达式
REGEXP_EXTRACT_ALL(v, '\babc_(\d+)\b')
模式说明:
\b:单词边界,保证abc_是一个独立单词的开头,不会和其他字符连在一起abc_:匹配固定前缀(\d+):捕获一个或多个数字,这就是要提取的目标值\b:单词边界,确保数字是当前单词的结尾,不会包含后续的空格或其他字符
验证结果
输入字符串 "abc_11234 abc_11235 xyz78763 abc_32342" 使用该正则后,返回结果就是你需要的 [11234, 11235, 32342]。
之前的abc_\s*(.+)问题在于.+是贪婪匹配,会一直匹配到字符串末尾,而且没有限制单词范围,所以会把第一个abc_之后的所有内容都抓进来,包括后面的空格和其他单词。
内容的提问来源于stack exchange,提问作者Keyang Zhang
相关产品推荐
相关产品推荐

