我一直在努力在 Postgres 中编写一些正则表达式来过滤掉我字符串中的一些垃圾。以下是我遇到的一些不同案例:
AUTO PARTS STORE 15
AUTO PARTS STORE #15
AUTO PARTS STORE #A15
AUTO PARTS STORE #AB15
AUTO PARTS STORE #A 15
AUTO PARTS STORE #A A15
AUTO PARTS STORE #15A
AUTO PARTS STORE #15-15
# 后面的数字可以是一个或多个。此外,“STORE”和“#”之间不能有空格。
我要过滤的是“STORE”和之后的任何商店编号,无论其格式如何。
到目前为止,这是我开发的:
select regexp_replace(estab_name,E'STORE (#)?( )?([A-Z])?([A-Z])?( )?\\d+\\Z',' ')
这是我遗漏的一些案例的示例,以及我想返回的内容(注意 - 这是基于评论的第三方编辑 - 向 OP 展示我认为他的意思;并邀请更正):
If the input string is: I would like to remove: I would like to return:
7-ELEVEN FOOD STORE #11150A STORE #11150A 7-ELEVEN FOOD
7-ELEVEN FOOD STORE #20132C STORE #20132C 7-ELEVEN FOOD
7-ELEVEN FOOD STORE #2306-2134 STORE #2306-2134 7-ELEVEN FOOD
7-ELEVEN STORE #2301-14410N STORE #2301-14410N 7-ELEVEN
7-ELEVEN STORE # 14279B TODD BAXTER STORE # 14279B TODD BAXTER 7-ELEVEN
84 LUMBER COMPANY, LP, STORE: #0922 STORE: #0922 84 LUMBER COMPANY, LP,
BIG LOTS STORE# 1886 STORE# 1886 BIG LOTS
KROGER STORE J-978 STORE J-987 KROGER
任何帮助将不胜感激。我对编写复杂的正则表达式非常陌生,这现在正在扼杀我的大脑。