注意 - 如果有人错过了标签,我在SSMS 2012的“查找和替换”工具中使用了正则表达式。
所以我有这个问题:
SELECT [name]
,[categories]
FROM [TEST_QUERIES].[dbo].[TestForCSV]
我想将其更改为:
SELECT replace([name], ',', '|')
,replace([categories], ',', '|')
FROM [TEST_QUERIES].[dbo].[TestForCSV]
我试过
find what: {\[*\]}
replace with: replace(\0, ',', '|')
但那没用。那么使这项工作的正则表达式是什么?
修改 所以在阅读@SO帖子并阅读this list后,我现在有了这个:
find what: {\[.*\]}
replace with: replace(\0, ',', '|')
和这个
find what: {\[:w\]}
replace with: replace(\0, ',', '|')
问题是他们给了我
replace([TEST_QUERIES].[dbo].[TestForCSV], ',', '|')
和
[TEST_QUERIES].replace([dbo], ',', '|').replace([TestForCSV], ',', '|')
分别。
我只想要在SELECT之后但在FROM更改之前的内容。
答案 0 :(得分:1)
/[\[][\w]+[\]]/
将匹配方括号中的任何字词。
故障:
第一个和最后一个/
是分隔符,模式如下:
[\[]
将匹配单个左方括号[
[\w]+
将匹配a-z,A-Z,0-9和_的一个或多个字母('\ w'是这些字符组的简写表达式)
[\]]
将匹配单个结束方括号]
在正则表达式中,方括号是一个特殊字符,用于匹配括号之间的任何内容的单个实例,因此我们必须使用反斜杠\
来转义“方括号内的方括号”
[[]
或[]]
不起作用。
总之,所使用的模式显示“匹配开头方括号[
,然后匹配a-z
,A-Z
,0-9
或{{1}的任意数量/组合最后匹配一个封闭的方括号_
。“
]
= /[\[][\w]+[\]]/
编辑 进一步请求后备功能
[a-zA-Z0-9_]
此模式将根据您的示例匹配,但可能不适合您代码中的其他参数。该模式使用一个名为“lookbehind”的函数,所有正则表达式引擎都不支持该函数。
您可以在此处查看此模式的工作原理:http://regex101.com/r/eP6nS4/2
这应该为您提供了解模式如何工作以及如何修改模式所需的信息。