JavaScript 正则表达式用第一个字母替换单词,除非在括号内

标签 javascript regex replace parentheses

我正在寻找 JavaScript 正则表达式,它将仅用每个单词的第一个字母替换文本 block 中的单词,但如果括号内有单词,则将它们保留在括号中。 目的是创建一个助记设备,用于记住剧本或戏剧剧本中的台词。我希望将实际台词缩减为首字母,但舞台方向(括号内)保持不变。

例如:

Test test test (test). Test (test test) test test.

将产生结果:

T t t (test). T (test test) t t.

使用:

 .replace(/(\w)\w*/g,'$1')

产量:

T t t (t). T (t t) t t.

我对正则表达式的理解很差。我已经研究它好几天了,尝试了很多东西,但似乎无法找到解决方案。

最佳答案

您可以通过对正则表达式进行一些小的调整来完成此操作:

/(\w|\([^)]+\))\w*/

添加的部分 \([^)]+\) 匹配两对括号内的所有内容。

"Test test test (test). Test (test test) test test.".replace(/(\w|\([^)]+\))\w*/g,'$1')
>"T t t (test). T (test test) t t."

编辑:解决评论中提出的问题

"Test test test (test). Test (test. test.) test test. test(test) (test)test".replace(/(\w|\([^)]+)\w*/g,'$1')
>"T t t (test). T (test. test.) t t. t(test) (test)t"

关于JavaScript 正则表达式用第一个字母替换单词,除非在括号内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29463716/

相关文章:

bash - 如何在一行中字符串替换命令的结果?

java - 如何使用java从数组中删除/添加项目

javascript - 如何只允许经过身份验证的用户(使用 cognito)访问自己的 S3 存储桶/ key ?

javascript - 在 React-Router Children 中渲染 Ajax 请求

javascript - 单击禁用和启用 setInterval

python - 将区分大小写的正则表达式和不区分大小写的正则表达式合并为一个

java - 第二个捕获组不捕获

regex - python 3 : splitting by 3rd delimiter

javascript - Angularjs - 中止/取消运行 $http 调用

javascript - 尝试更改 onchange 中的所有数字 - onchange.replace 不起作用?