我正在尝试创建一个可删除非标点字符的可视化,但仍会跟踪字符串中的章节。
到目前为止,我已经实现了创建以下正则表达式以匹配我想要保留的内容:
(\CAPÍTULO ([0-9]+))|([\\?.,:;!¡¿。、·*\(\)\[\]\-–\_«»\'\'\/@#$&\%\^=+\|<>\"])
如何从字符串中替换其余文本?
答案 0 :(得分:0)
您可以轻松使用replace
功能,试试这个例子:
var str = "whatever, string, you like!";
var newStr = str.replace(/\w/g, ' ');
console.log(newStr);
答案 1 :(得分:0)
试试这个:
var r = /(CAPÍTULO [0-9]+|[\\?.,:;!¡¿。、·*\(\)\[\]\-–\_«»\'\'\/@#$&\%\^=+\|<>\"])|(.)/g
var s = "ABC!@#123^&*XYZ;";
var p = s.replace(r, "$1");
// Result: "!@#^&*;"
首先,它匹配组1中的所有字符,任何不匹配都属于第二组。由于未找到组号(即$ 1)的结果为空,这有效地清除了除第一组匹配之外的所有内容。
如果您需要保留其他字符的位置,可以执行以下操作:
var r = /(CAPÍTULO [0-9]+|[\\?.,:;!¡¿。、·*\(\)\[\]\-–\_«»\'\'\/@#$&\%\^=+\|<>\"])|(.)/g
var s = "ABC!@#123^&*XYZ;";
s.replace(r, "$1,").split(",");
// Result: ["", "", "", "!", "@", "#", "", "", "", "^", "&", "*", "", "", "", ";", ""]
您最后需要处理额外的""
。 ;)这是有效的,因为不是替换为任何东西,(对于非匹配,"$1"
变为""
,逗号(或您想要的任何字符),跟踪位置。您可以使用任何内容,例如s.replace(r, "$1~").split("~");
。
答案 2 :(得分:0)
删除非标点字符,但仍会跟踪字符串中的章节。
这样做的经典方法是匹配您做要保留的内容(CAPITULO [0-9]+
),或者(|
)其他 don 't 想保留 - 在这种情况下,非标点字符(\w
),然后捕获它,然后用空字符串替换后者。
const regexp = /CAPITULO [0-9]+|(\w)/g;
const input = "CAPITULO 22 .#( nonpunctuation characters $%&*'";
const processed = input.replace(regexp, (match, match1) => match1 ? '' : match);
console.log(processed);
如果您确实要列出要保留的所有标点字符,请将上面的\w
替换为
[^\\?.,:;!¡¿。、·*()[\]\-–_«»'\/@#$&\%\^=+\|<>\"]
如果要保留剩余字符的位置,请将替换功能更改为
(match, match1) => match1 ? ' ' : match