以下是我要过滤的文档(https://gist.github.com/jianbo/2192f8f1d25a422ed6a5)
每个段落都以这样的随机字符串结尾Q: U A" j$ w& p
我想删除它们,我的想法是扫描任何与字符匹配的匹配以一个句号开始并以超过3个空格结束。
这就是我所拥有的,但我如何检测前面的句号和三个空格?
示例数据(但请查看GIT text):
这么长这应该留下时间的面试,不知道会怎么样:Q:U A" j $ w& p这么长时间,这应该是stady的面试,不知道会怎么样
我的代码
data.match(/[a-zA-Z~!@#$%^&*()_+{}|\;':",./<>? ]/g).join('')
此输出
"this should stay : Q: U A" j$ w& p again this should stady"
答案 0 :(得分:0)
我会尝试在正则表达式中添加特殊字符:
var data = 'yourstring';
data.replace(/[^\w\sñáóí\&\$\"]/gi, '');
答案 1 :(得分:0)
那些看似错误的角色来自U + 3002 Unicode字符&#34; IDEOGRAPHIC FULL STOP。&#34;你没有说出什么是UTF,但它看起来像网络上的内容所以我猜你最有可能下载为UTF-8。
我不知道你正在使用什么样的正则表达式引擎,如果你支持Unicode,那么我就提供了一个非常通用的&#34; perl&#34;命令行解决方案。这个正则表达式不需要16位或32位库;它将在UTF-8文件上以常规字节模式工作:
perl -pe 's/(?=\xE3\x80\x82)(.*\xE3\x80\x82).*/\1/' your_file
第一部分只检查我们是否有U + 3002表意文字完全停止,UTF-8是一个三字节代码点,十六进制值为E3 80 82.如果断言为真(即我们有一个U + 3002),它捕获最多包括U + 3002字符的句号。如果您不想包含句号,只需将右括号从\ x82后移到第一个星号后,即:
s/(?=\xE3\x80\x82)(.*)\xE3\x80\x82.*/\1/
同样,没有提供有关正则表达式引擎/风格或编程语言等的任何细节,这可能需要将匹配件拔出,转义,并替换字符串以便单独调用等,但是我我想我已经给了你足够的指导,希望你能在我的回答中找到价值。