Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式替换字符串_Java_Regex_Sed - Fatal编程技术网

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'