Java 使用正则表达式替换字符串
我正在尝试将所有发生的Java 使用正则表达式替换字符串,java,regex,sed,Java,Regex,Sed,我正在尝试将所有发生的转换(string1,string2)替换为CAST(AS) 输入字符串如下: Insert Into `Collaboration`.`SR_SearchResult`(SearchLinkID,PWUserID,SearchRank) Select distinct lnk.SearchLinkID, Convert(varchar(10),@PWUserID) ,Convert(varchar(10),@rank) from `Collaborati
转换(string1,string2)替换为CAST(AS)
输入字符串如下:
Insert Into `Collaboration`.`SR_SearchResult`(SearchLinkID,PWUserID,SearchRank)
Select distinct lnk.SearchLinkID, Convert(varchar(10),@PWUserID) ,Convert(varchar(10),@rank) from `Collaboration`.`SR_SearchLink` lnk (nolock)
inner join `Collaboration`.`SR_SearchTag` tg (nolock) on lnk.SearchLinkID = tg.SearchLinkID
WHERE @strSearch
所需的输出字符串:
Insert Into `Collaboration`.`SR_SearchResult`(SearchLinkID,PWUserID,SearchRank)
Select distinct lnk.SearchLinkID, CAST(@PWUserID AS varchar(10)) ,CAST(@rank AS varchar(10)) from `Collaboration`.`SR_SearchLink` lnk (nolock)
inner join `Collaboration`.`SR_SearchTag` tg (nolock) on lnk.SearchLinkID = tg.SearchLinkID
WHERE @strSearch
我从我这边尝试了很多,但都没能做到。请帮助我。假设您正在使用Java,您可以使用以下正则表达式:
convert\(.+?),(.+?)\
并像这样使用它(示例):
收益率:
Insert Into Collaboration.SR_SearchResult(SearchLinkID,PWUserID,SearchRank) Select distinct lnk.SearchLinkID, CAST(@PWUserID AS varchar(10)) ,CAST(@rank AS varchar(10)) from Collaboration.SR_SearchLink lnk (nolock) inner join Collaboration.SR_SearchTag tg (nolock) on lnk.SearchLinkID = tg.SearchLinkID
WHERE @strSearch
通过sed
$ sed 's/\bConvert(\([^,]*\),\([^)]*\))/CAST(\2 AS \1)/gi' file
Insert Into Collaboration.SR_SearchResult(SearchLinkID,PWUserID,SearchRank) Select distinct lnk.SearchLinkID, CAST(@PWUserID AS varchar(10)) ,CAST(@rank AS varchar(10)) from Collaboration.SR_SearchLink lnk (nolock) inner join Collaboration.SR_SearchTag tg (nolock) on lnk.SearchLinkID = tg.SearchLinkID
WHERE @strSearch
要保存所做的更改,您需要添加-i
参数,例如,sed-i's//gi'
i
修饰符有助于区分大小写匹配。我想您需要的是:
sed 's/Convert(\(.*\),\(.*\))/CAST(\2 AS \1)/g'
谢谢阿维纳什·拉吉。在你的帮助下,我犯了我的错误。它不会起作用的。Avinash Raj解决方案在sed中是完美的。像这样的奇怪模式是否可以转换(懒惰(dog,is,(running),fast)或(,not())…存在(内部
()
带有,
内部?正则表达式转换(?([^,]*,([^)]*)
sed 's/Convert(\(.*\),\(.*\))/CAST(\2 AS \1)/g'