删除字符串中的希腊字母

时间:2019-12-17 18:40:33

标签: postgresql regexp-replace

我正在预处理脏文本字段。我设法删除了单个字符和数字,但是仍然有我想完全删除的希腊字母(从公式中删除)。 任何类型的希腊字母都可以出现在字符串中的任何位置。 有什么想法怎么做吗?

select regexp_replace(' ω ω α ω alkanediylbis alkylimino bis alkanolpolyethoxylate   the formula where       straight   branched chain alkylene group also known     alkanediyl group that has   the range       carbon atoms and     least  carbon atoms   length   and   can   the same   different and are primary alkyl groups which contain     carbon atoms each   and   can   the same   different and are alkylene groups which contain   the range   from     carbon atoms each and   and   are the same   different numerals     the range       each ', '\W+', '')

1 个答案:

答案 0 :(得分:1)

[Α-Ωα-ω]将与标准希腊字母匹配。 (请注意,这里的Α与拉丁语的A是不同的字符,尽管它们看起来可能完全相同)。

一些常用符号不在标准字母范围内,因此至少您可能希望使用[\u0370-\u03FF]来匹配整个Greek Unicode block

Unicode也有

...还有可能更多。

与其尝试列出要替换的所有内容,不如列出要保留的内容可能更容易。例如,要删除可打印的ASCII范围之外的所有内容:

select regexp_replace(
  'ABCΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρΣσςΤτΥυΦφΧχΨψΩω123',
  '[^\u0020-\u007E]', '', 'g'
);

 regexp_replace
----------------
 ABC123