javascript 标记字符串以清理文本
javascript tokenizing strings to cleanup text
我在尝试清理一些文本时遇到了一些麻烦。我收到一个输入文本,我想删除所有非单个 space 白色 space 字符,删除句点、逗号等,但不要像这样拆分单词:
Ph.D。
老师的
基本上我不想删除不改变单词含义的标点符号,感叹号,问号之类的可以去掉。
我写了一些 js 正则表达式,但我觉得它很乱。有什么清理建议吗?
var cleaned_plaintext = input_text;
cleaned_plaintext = cleaned_plaintext.toLowerCase();
cleaned_plaintext = cleaned_plaintext.replace(/^\s+/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/[,:()]/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\|\s+/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\s\-+\s/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\s{2,}/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\.\s+/mg, " ");
cleaned_plaintext = cleaned_plaintext.replace(/\?/mg, "");
cleaned_plaintext = cleaned_plaintext.replace(/([=11=]\r\n|\n|\r|[=11=])/gm," ");
cleaned_plaintext = cleaned_plaintext.replace(/\./mg, "");
cleaned_plaintext = cleaned_plaintext.replace(/[©]\s+/mg, "");
cleaned_plaintext = cleaned_plaintext.replace(/[.,?!:;()–?|$©”“|…]/gm,"");
有很多正则表达式,我觉得可以清理很多。我只是不确定如何。我知道这被标记为 javascript 但如果有另一种语言有更好的工具,我也愿意使用它。
我想你可以将一些正则表达式组合在一起。
你有这两个正则表达式:
/^\s+/mg
/\s{2,}/mg
相当于:
/\s{2,}|^\s/mg
这个正则表达式:
/\s\-+\s/mg
可以写成:
/\s-+\s/mg
我不确定这一切是怎么回事:
/[©]\s+/mg
/\|\s+/mg
/[,:()]/mg
/\?/mg
/\./mg
/[.,?!:;()–?|$©”“|…]/gm
您至少要删除所有内容两次。
请注意 )–?
包括这些字符:
)*+,-./0123456789:;<=>?
您可以摆脱其中的大部分,并将您的一个正则表达式更改为:
/[!(–?$”“…]/mg
要处理要删除可选尾随 space 的 2 个符号,您可以使用:
/[©|]\s?/mg
您使用这两个正则表达式查找要替换为 space:
的内容
/\.\s+/mg
/([=17=]\r\n|\n|\r|[=17=])/gm
你可以合并它们,并删除一些不需要的东西:
/\.\s+|\n|\r|[=18=]/mg
运行 这些新正则表达式的最佳顺序:
/\.\s+|\n|\r|[=19=]/mg //remember replace with space!
/\s-+\s/mg
/[©|]\s?/mg
/[!(–?$”“…]/mg
/\s{2,}|^\s/mg
您也可以将函数链接在一起,例如:.replace(...).replace(...).replace(...)
。您可以决定这是否是个好主意。
我在尝试清理一些文本时遇到了一些麻烦。我收到一个输入文本,我想删除所有非单个 space 白色 space 字符,删除句点、逗号等,但不要像这样拆分单词:
Ph.D。 老师的
基本上我不想删除不改变单词含义的标点符号,感叹号,问号之类的可以去掉。
我写了一些 js 正则表达式,但我觉得它很乱。有什么清理建议吗?
var cleaned_plaintext = input_text;
cleaned_plaintext = cleaned_plaintext.toLowerCase();
cleaned_plaintext = cleaned_plaintext.replace(/^\s+/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/[,:()]/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\|\s+/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\s\-+\s/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\s{2,}/mg,"");
cleaned_plaintext = cleaned_plaintext.replace(/\.\s+/mg, " ");
cleaned_plaintext = cleaned_plaintext.replace(/\?/mg, "");
cleaned_plaintext = cleaned_plaintext.replace(/([=11=]\r\n|\n|\r|[=11=])/gm," ");
cleaned_plaintext = cleaned_plaintext.replace(/\./mg, "");
cleaned_plaintext = cleaned_plaintext.replace(/[©]\s+/mg, "");
cleaned_plaintext = cleaned_plaintext.replace(/[.,?!:;()–?|$©”“|…]/gm,"");
有很多正则表达式,我觉得可以清理很多。我只是不确定如何。我知道这被标记为 javascript 但如果有另一种语言有更好的工具,我也愿意使用它。
我想你可以将一些正则表达式组合在一起。
你有这两个正则表达式:
/^\s+/mg
/\s{2,}/mg
相当于:
/\s{2,}|^\s/mg
这个正则表达式:
/\s\-+\s/mg
可以写成:
/\s-+\s/mg
我不确定这一切是怎么回事:
/[©]\s+/mg
/\|\s+/mg
/[,:()]/mg
/\?/mg
/\./mg
/[.,?!:;()–?|$©”“|…]/gm
您至少要删除所有内容两次。
请注意 )–?
包括这些字符:
)*+,-./0123456789:;<=>?
您可以摆脱其中的大部分,并将您的一个正则表达式更改为:
/[!(–?$”“…]/mg
要处理要删除可选尾随 space 的 2 个符号,您可以使用:
/[©|]\s?/mg
您使用这两个正则表达式查找要替换为 space:
的内容/\.\s+/mg
/([=17=]\r\n|\n|\r|[=17=])/gm
你可以合并它们,并删除一些不需要的东西:
/\.\s+|\n|\r|[=18=]/mg
运行 这些新正则表达式的最佳顺序:
/\.\s+|\n|\r|[=19=]/mg //remember replace with space!
/\s-+\s/mg
/[©|]\s?/mg
/[!(–?$”“…]/mg
/\s{2,}|^\s/mg
您也可以将函数链接在一起,例如:.replace(...).replace(...).replace(...)
。您可以决定这是否是个好主意。