可以使用分组来完成,替换字符串中使用$1、$2、$3……可以获取对应组的匹配结果。如果前后的字符串是固定的那更简单,直接在替换的时候写上就好了。
因为String的replaceAll就是使用的正则表达式所以示例直接使用的String的替换,Pattern的替换同理。
public class Demo {public static void main(String[] args) {
String str = "aa文字1bb哈哈cc测试dx,测试字符串aa1234bb"
// 替换aa、bb之间的字符串为 "成功"
String str1 = str.replaceAll("aa.*?bb", "aa成功bb")
System.out.println(str1)
// 替换aa、bb之间的字符串为 "成功"
String str2 = str.replaceAll("(aa).*?(bb)", "$1成功$2")
System.out.println(str2)
// 替换小写字母之间的字符串为 "成功"
String str3 = str.replaceAll("([a-z]+).*?([a-z]+)", "$1成功$2")
System.out.println(str3)
}
}
一:思路:
使用java方法replaceAll()通过正则表达式匹配替换掉所有的字母。
二:代码如下(可直接复制出来运行,在控制台中查看效果):
public static void main(String[] args){String str="abc123123成你懂吗bxcxsaf"
//通过正则表达式替换掉所有的字母
String strNew = str.replaceAll("[a-zA-Z]","")
System.out.println(strNew)
}
运行结果如下:
三:扩展(正则表达式)
正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多情况下,通常被用来,检索和替换符合某个规则的文本。
PS:有兴趣可以深入研究一下正则表达式的语法,及规则。
java过滤sql关键字的正则替换掉方法如下:可以在C#中这样做:Regexregex = newRegex(@"]*>[^")
stringcleanedHtml = regex.Replace(html, "")
可是我并不想再写个循环去遍历每条记录,然后保存每条记录,我想在数据库中一步到位,而sql只提供了简单的replace函数,这个函数明显不能达到咱的要求,那就去写一个自定义函数吧。
函数源代码如下:CREATE functiondbo.regexReplace
(@source ntext,--原字符串@regexp varchar(1000),--正则表达式@replace varchar(1000),--替换值@globalReplace bit=1,--是否是全局替换@ignoreCase bit=0 --是否忽略大小写)returnS varchar(1000)AS
begin
declare@hr intege
declare@objRegExp integer
declare@result varchar(5000)exec@hr =sp_OACreate'VBScript.RegExp',@objRegExp OUTPUT
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Pattern',@regexp
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'Global',@globalReplace
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OASetProperty@objRegExp,'IgnoreCase',@ignoreCase
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OAMethod@objRegExp,'Replace',@result OUTPUT,@source,@replace
IF@hr 0 begin
exec@hr =sp_OADestroy@objRegExp
returnnullend
exec@hr =sp_OADestroy@objRegExp
IF@hr 0 begin
returnnullend
return@result
end
需要注意的是,即使写好了这个函数,也并不能马上使用。执行这个函数时可能会出现以下的错误:Msg 15281, Level 16, State 1, Line 1
SQL Server blocked access to procedure 'sys.sp_OACreate' of component 'Ole Automation Procedures' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Procedures' by using sp_configure. For more information about enabling 'Ole Automation Procedures', see "Surface Area Configuration" in SQL Server Books Online.
这是因为未开启Ole Automation Procedures选项,MSDN中的Ole Automation Procedures选项。执行下面的语句开启这个选项:sp_configure'show advanced options',1GO
RECONFIGUREGOsp_configure'Ole Automation Procedures',1GO
RECONFIGUREGO
所有的准备工作都已经做好,那就试验一下吧。
Example1:忽略大小写并替换selectdbo.regexReplace('123456',']*>[^','',1,1)
Example2: 使用贪婪匹配
html代码:
Also Available - Smith &Hogan: Criminal Law Cases &Materials 10th ed
There is, as ever, detailed analysis of the many recent case developments, in particular,
a revision of the chapter dealing with secondary liability and joint enterprise.
调用代码:selectdbo.regexReplace(html,']*>(.|\n)*?','',1,1)
Example3:去除html标签selectdbo.regexReplace('
Key Contact:
Mr Jack, Zhou
General Manager
Mr Adu, Ho
Marketing Director
Overseas Sales
MsWinny, Luo
Sales Manager
Overseas Sales',']*>','',1,0)
Example4:数据库字段值替换updateBooks。