regex - perl 中的正则表达式替换和连字符源文件中字符串的一部分
问题描述
我想替换所有出现的这种模式
new Window.MyElement();
和
document.createElement('my-element');
请注意,MyElement 可以是任何 Camelized 元素名称
我需要在我的 shell 中运行的正则表达式可能是什么,例如
perl -pi -e '....' my-sourcefile.js
谢谢
解决方案
perl -i -CSD -pe'
s{new Window\.(\w+)\(\);}{
"document.createElement(\x27".(
$1 =~ s/(\p{Lu})/-\l$1/gr =~ s/^-//r
)."\x27);"
}eg
' my-sourcefile.js
或者
perl -i -CSD -MString::CamelCase=decamelize -pe' # Only supports ASCII names
s{new Window\.(\w+)\(\);}{
"document.createElement(\x27".(
decamelize($1) =~ s/_/-/rg
)."\x27);"
}eg
' my-sourcefile.js
换行符是为了可读性而存在的,但可以省略它们而不会造成任何问题。
推荐阅读
- c - 如何同步文件读取以读取相同的文件
- selenium-webdriver - 并行执行导致测试数据在测试中混合
- php - 无法使用 _xclick 在贝宝中传递金额
- angular6 - 动态附加的 Angular 确认弹出框不起作用
- html - 如何在 Flask 中将数据从数据库发送到 html 表单进行编辑
- c# - 更新查询成功但在 SQL Server 数据库中获取空白值
- python - 根据空白列为结果创建新列
- spring-boot - 在 Spring 启动应用程序中,@Component 注释对于 repo 是可选的
- mongodb - MongoDB 中的 existsById 和 findById 性能
- php - 如何获取存储在laravel数据库表中的经过身份验证的用户存储的数据