[英]Masking a query string param value using Postgres regexp_replace
我想用PostgreSQL表列中的XXXXXXXX
屏蔽电影名称。 该列的内容类似于
hollywood_genre_movieTitle0=The watergate&categorey=blabla&hollywood_genre_movieTitle1=Terminator&hollywood_genre_movieTitle2=Spartacus&hollywood_genre_movieTitle3=John Wayne and the Indians&categorey=blabla&hollywood_genre_movieTitle4=Start Trek&hollywood_genre_movieTitle5=ET&categorey=blabla
我想使用regexp_replace
函数掩盖标题(在hollywood_genre_movieTitle\\d
模式之后)
regexp_replace('(hollywood_genre_movieTitle\d+=)(.*?)(&?)', '\1XXXXXXXX\3', 'g')
这只是替换标题的第一次出现并剪切字符串。 简而言之,这种表达方式并不能满足我的要求。 我想将所有电影名称都替换为XXXXXXXX
。
有人可以帮我解决这个问题吗?
该正则表达式不起作用,因为(.*?)(&?)
匹配空字符串,或者如果立即遵循hollywood_genre_movieTitle\\d+=
模式,则&
落入组3。
您需要使用否定的字符类[^&]
和+
量词来匹配hollywood_genre_movieTitle\\d+=
模式之后的&
以外的任何1个或多个字符。
SELECT regexp_replace(
'hollywood_genre_movieTitle0=The watergate&categorey=blabla&hollywood_genre_movieTitle1=Terminator&hollywood_genre_movieTitle2=Spartacus&hollywood_genre_movieTitle3=John Wayne and the Indians&categorey=blabla&hollywood_genre_movieTitle4=Start Trek&hollywood_genre_movieTitle5=ET&categorey=blabla',
'(hollywood_genre_movieTitle\d+=)[^&]+',
'\1XXXXXXXX',
'g')
请参阅在线演示 。
细节
(hollywood_genre_movieTitle\\d+=)
-捕获组1:
hollywood_genre_movieTitle
子字符串 \\d+=
-1个或多个数字,后跟一个=
[^&]+
- &
以外的1个或更多字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.