要格式化数千个 SQL 查询,我需要将所有不在引号对中的字符转换为大写。
例如:
select * from region where regionkey = 'America'
转换为
SELECT * FROM REGION WHERE REGIONKEY = 'America'
使用 perl,我可以通过以下方式将引用的字符转换为大写:
perl -p -e 's/('.+?')/\U\1/g'
并得到:
select * from region where regionkey = 'AMERICA'
问题是如何“反转”捕获结果,例如,前进到不在引号中?