[英]JavaScript Regex: Remove text between parentheses, brackets and cyrillic character
有没有可能改变
(Test 1 / Test 2) [Test 3] Отдел / Here is title - subtitle (by Author) - 1234 (5678-9999), descriptions (best), more descriptions
至
Here is title - subtitle (1234) (descriptions)
在正则表达式中使用 JavaScript?
目前,我必须结合多个替换功能,如下所示
let text = '(Test 1 / Test 2) [Test 3] Отдел / Here is title - subtitle (by Author) - 1234 (1234-4567), descriptions (best), more descriptions'; text = text .replace(/ *\\([^) ]*\\) */g, "") .replace(/ \\([\\s\\S]*?\\)/g, '') .replace(/[0-9`~!@#$%^&*()_|+\\-=?;:'",.<>\\{\\}\\[\\]\\\\\\/]/gi, ''); console.log(text);
但它没有按预期工作。 有人有主意吗?
输入这个作为“证明”它有效的答案;)
但是,正如我在评论中所说,它并不漂亮。 一定会有更好的办法。
无论如何,它所做的是使用\\([^)]*\\)
消耗(匹配)第一个括号对内的所有内容。 之后,它将/
(含)之前的所有内容与[^/]*?\\/\\s*
匹配(使第一部分变得非贪婪,它最初不是)。 然后它捕获标题,直到(
,与([^(]*?)\\s*\\(
。之后是时候匹配到1234
。完成[^)]*\\)\\s*-\\s*
.
是时候用(\\d+)
捕获1234
(我假设它总是一个数字,否则你需要用([^)]*)
东西替换它。
用\\s*\\([^)]*\\),\\s*
对描述进行数学运算\\s*\\([^)]*\\),\\s*
并用(.*?)\\s\\(
( \\s\\(
是为了不在捕获组中获取它) )。
最后将其余的与.*$
匹配(不是真的有必要,但是...... :)
将所有这些替换为$1 ($2) ($3)
以获得正确位置的括号。 瞧:D
let text = '(Test 1 / Test 2) [Test 3] Отдел / Here is title - subtitle (by Author) - 1234 (1234-4567), descriptions (best), more descriptions'; console.log(text.replace(/^\\([^)]*\\)[^/]*?\\/\\s*([^(]*?)\\s*\\([^)]*\\)\\s*-\\s*(\\d+)\\s*\\([^)]*\\),\\s*(.*?)\\s\\(.*$/gm, '$1 ($2) ($3)'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.