仅删除某些类型的字符正则表达式

时间:2017-08-10 20:20:50

标签: regex notepad++

编辑:对不起,应该提供更多信息

是否可以在此处仅替换英文文本?

{ "question": "本能", "answers":[ "ほんのうInstinct" ] },

我希望它只是{ "question": "本能", "answers":[ "めがね" ] },并保留其他英文文本。

尝试了[A-Za-z] +,它适用于所有英文文本,但我不知道如何选择某个部分。我在记事本+

上使用查找和替换

3 个答案:

答案 0 :(得分:1)

这是你的正则表达式:/[A-Za-z]*/g



var s = '":[ "めがねGlasses" ] },'

console.log(s.replace(/[A-Za-z]*/g, ''))




答案 1 :(得分:1)

您可以用空字符串替换匹配/[a-z]/gi的所有内容。

标志gi分别表示您希望多次匹配,并且您希望不区分大小写。

您还可以使用代表单词字符的\w快捷方式,但这也会匹配您可能不想删除的[0-9_]

Here is a working exemple of the regex.

答案 2 :(得分:1)

您可以使用

(?:\G(?!^)|"answers"\s*:\s*\[\s*")[^"]*?\K[a-zA-Z]+

并替换为空字符串。

<强>详情:

  • (?:\G(?!^)|"answers"\s*:\s*\[\s*") - 上一次成功匹配(\G(?!^))或(|"answers"子字符串,0 +空格,:,0 +的结束空格,[,0 +空格,"(参见"answers"\s*:\s*\[\s*"
  • [^"]*? - 除"以外的任何0 +字符,因为很少(因为*?是一个惰性量词)
  • \K - 匹配重置运算符,丢弃与匹配缓冲区匹配的所有文本
  • [a-zA-Z]+ - 一个或多个ASCII字母

测试:

enter image description here