我想选择包含非字母数字的记录并从字符串中删除这些符号。我期望的结果是只有数字和字母的字符串。
我对正则表达式不是很熟悉,有时它真的很令人困惑。下面的代码来自对类似问题的回答。但它也返回只有字母和空格的记录。我还尝试/s
在某些空格不是空格而是制表符的情况下使用。但我得到了同样的结果。
另外,我想删除除字母、数字和空格之外的所有符号、字符。我发现一个removesymbols
从 google命名的函数可以引用。但似乎这个功能根本不存在。该网站介绍的removesymbols
是https://cloud.google.com/dataprep/docs/html/REMOVESYMBOLS-Function_57344727。如何删除所有符号?我不想使用,replace
因为有很多符号,而且我不知道它们有各种非字母数字。
-- the code here only shows I want to select all records with non-alphanumeric
SELECT EMPLOYER
FROM fec.work
WHERE EMPLOYER NOT LIKE '[^a-zA-Z0-9/s]+'
GROUP BY 1;
我建议使用REGEXP_REPLACE
for select,删除字符,并使用REGEXP_CONTAINS
只获取您想要的字符。
SELECT REGEXP_REPLACE(EMPLOYER, r'[^a-zA-Z\d\s]', '')
FROM fec.work
WHERE REGEXP_CONTAINS(EMPLOYER, r'[^a-zA-Z\d\s]')
你说你不想使用replace
是因为你不知道有多少个字母数字。但是,与其列出所有非字母数字,为什么不使用^
来获取除字母数字之外的所有内容?
编辑 :
为了完成米哈伊尔的回答,您的正则表达式有多种选择:
'[^a-zA-Z\\d\\s]' // Basic regex
r'[^a-zA-Z\d\s]' // Uses r to avoid escaping
r'[^\w\s]' // \w = [a-zA-Z0-9_] (! underscore as alphanumerical !)
如果您不认为下划线是字母数字,则不应使用 \w
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句