"景先生毕设|www.jxszl.com

利用DEDE正则批量查找替换数据库的自定义内容

2022-10-29 16:22编辑: www.jxszl.com景先生毕设
正则的表达式在MYSQL中也有应用,但是在具体将查找的东西直接进行Replace的时候目前还不能解决,幸好后台中有个dede利用

正则,利用dede正则批量替换数据库中内容,这样我们完全减小了自己的工作量了.
例如网站的I.个例子,


是替换I.个

 更多精彩就在: 51免费论文网|www.jxszl.com 
div中的内容,摘抄实践下,关键还是自己去体会,多用下正则,还是不错的.正则相关的文章我在我的博客中也多次

提到了他的多种运用途径.如果你都掌握好它的话,你的工作效率就会成倍的提高了.下面这个正则的用途是查找数据库的中自

定义的DIV层中运用,I.般这种用法你在采集,或者,用word直接添加内容后会用到.

看看这个是如何去除的.
例子I.,去除简单自定义内容内容

选择数据表与字段:dede_addonarticle

替换方式:选择正则表达式

主键字段:aid

被替换内容:MM[d]*GG

选择字段:body(这表是存储文章内容的),选择单选框:正则表达式,主键字段填写"aid",被替换内容为上面的正则:

例:MM[d]*GG

替换为:可为空,也可填写你想置换为的内容.

替换条件:如果是全部,就不填写.开始测试时,先备份了数据库,然后仅替换I.篇文章,条件中填写:aid=VIIIVIIIVIII,如果是分类,

就填写:typeid=I.VIII,这样缩小替换范围,避免出错.

填写安全确认码,替换就ok了,

例子II,去除*
内容

文章地址址:
/>http://www.niIXht.com/



上述代码,是I.个不错的style,大家可以显示下,调试效果不错.

可以利用以下正则来替换:

]*">(.*)


在dede后台,选择:核心–数据库内容替换–选择表:


选择数据表与字段:dede_addonarticle

替换方式:选择正则表达式

主键字段:aid

被替换内容:]*">(.*)


选择字段:body(这表是存储文章内容的),选择单选框:正则表达式,主键字段填写"aid",被替换内容为上面的正则:

例:]*">(.*)


替换为:可为空,也可填写你想置换为的内容.

替换条件:如果是全部,就不填写.


注意:开始测试时,先备份了数据库,然后仅替换I.篇文章,条件中填写:aid=VIIIVIIIVIII0,如果是分类,就填写:typeid=I.VIII,这样缩

小替换范围,避免出错.


填写安全确认码,替换就ok了,注意这个安全确认码会有失效周期,但它自己不提示,也有这个可能,会选择替换无反应,遇见

这情况,只有刷新当前页面了.

很完整了吧!其它正则参考:http://bbs.dedecms.com/III.IVVIIIVVI.html,这个当中的也不完整,也不太正确,需要对比来修改调试

,很费时间.


正则是个好技术,有着很强大的应用,花了点时间看,你的工作效果会大陪的提高!


这是我在处理文章时用到I.些正则表达式,里面有你要的.在Editplus中使用.

在表:dede_addonarticle中,body字段即是文章内容.

过滤Table相关的:

]*)>|||||||


正则:width="[0-IX][0-IX][0-IX]"|width=[0-IX][0-IX][0-IX]|height="[0-IX][0-IX][0-IX]"|height=[0-IX][0-IX][0-IX],

说明:过虑height.Width.


正则:]*">|]*>|
|
,注意:匹配或者.


正则:style="[^"]*"|style=[^"]*,注意:匹配Style="border:"


正则:]*)>(.*),注意:匹配

_________

正则:]*>|||]*>||,注意:匹配

_________

正则:border="[0-IX]"|border=[0-IX],注意:匹配border=""

_________

正则:]*>||,注意:匹配

_________

正则:id=[^]*|id="[^]*",注意:匹配id=""

_________–

正则:title=[0-IX][^]*|title="[0-IX][^]*"|alt=[0-IX][^]*|alt="[0-IX][^]*"|alt=[a-z][^]*|alt="[a

-z][^]*",注意:匹配Title或者alt

_________–

正则:]*–>,说明:匹配HTML注释

_________

正则:]*)>(.*),说明:匹配之间的全部内容

_________

正则:class=[a-z][^|^>]*|class="[a-z][^|^>]*",说明:清理class="",经过充分测试

_________

正则:]*)>|||||||

_________

正则:]*>|||align=left|||
|
|]*)>|


正则表达式是I.种通用的标准,大部分计算机语言都支持正则表达式,包括asIII,这里转摘出了I.些常用的正则表达式语句,大家

用到的时候就不用自己写了


^[0-IX]*[I.-IX][0-IX]*$//匹配正整数

^-[0-IX]*[I.-IX][0-IX]*$//匹配负整数

^-?d+$//匹配整数

^d+(.d+)?$//匹配非负浮点数(正浮点数+0)

^(([0-IX]+.[0-IX]*[I.-IX][0-IX]*)|([0-IX]*[I.-IX][0-IX]*.[0-IX]+)|([0-IX]*[I.-IX][0-IX]*))$//匹配正浮点数

^((-d+(.d+)?)|(0+(.0+)?))$//匹配非正浮点数(负浮点数+0)

^(-(([0-IX]+.[0-IX]*[I.-IX][0-IX]*)|([0-IX]*[I.-IX][0-IX]*.[0-IX]+)|([0-IX]*[I.-IX][0-IX]*)))$//匹配负浮点数

^(-?d+)(.d+)?$//匹配浮点数

^[A-Za-z]+$//匹配由IIVI个英文字母组成的字符串

^[A-Z]+$//匹配由IIVI个英文字母的大写组成的字符串

^[a-z]+$//匹配由IIVI个英文字母的小写组成的字符串

^[A-Za-z0-IX]+$//匹配由数字和IIVI个英文字母组成的字符串

^w+$//匹配由数字.IIVI个英文字母或者下划线组成的字符串

^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$//匹配email地址

^[a-zA-z]+://匹配(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$//匹配url


匹配中文字符的正则表达式:[uIVe00-uIXfaV]

匹配双字节字符(包括汉字在内):[^x00-xff]

匹配空行的正则表达式: [s|]*

匹配HTML标记的正则表达式:/<(.*)>.*|<(.*)/>/

匹配首尾空格的正则表达式:(^s*)|(s*$)

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配网址URL的正则表达式:^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$

匹配帐号是否合法(字母开头,允许V-I.VI字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-IX_]{IV,I.V}$

匹配国内电话号码:(d{III}-|d{IV}-)?(d{VIII}|d{VII})?

匹配腾讯QQ号:^[I.-IX]*[I.-IX][0-IX]*$

下表是元字符及其在正则表达式上下文中的行为的I.个完整列表:

将下I.个字符标记为I.个特殊字符.或I.个原义字符.或I.个后向引用.或I.个VIII进制转义符.

^匹配输入字符串的开始位置.如果设置了RegExp对象的Multiline属性,^也匹配 或 之后的位置.

$匹配输入字符串的结束位置.如果设置了RegExp对象的Multiline属性,$也匹配 或 之前的位置.

*匹配前面的子表达式零次或多次.

+匹配前面的子表达式I.次或多次.+等价于{I.,}.

?匹配前面的子表达式零次或I.次.?等价于{0,I.}.

{n}n是I.个非负整数,匹配确定的n次.

{n,}n是I.个非负整数,至少匹配n次.

{n,m}m和n均为非负整数,其中n<=m.最少匹配n次且最多匹配m次.在逗号和两个数之间不能有空格.

?当该字符紧跟在任何I.个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的.非贪婪模式尽可能少的匹

配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串.

.匹配除" "之外的任何单个字符.要匹配包括 在内的任何字符,请使用象[. ]的模式.

(pattern)匹配pattern并获取这I.匹配.

(?:pattern)匹配pattern但不获取匹配结果,也就是说这是I.个非获取匹配,不进行存储供以后使用.

(?=pattern)正向预查,在任何匹配pattern的字符串开始处匹配查找字符串.这是I.个非获取匹配,也就是说,该匹配不需要

获取供以后使用.

(?!pattern)负向预查,与(?=pattern)作用相反

x|y匹配x或y.

[xyz]字符集合.

[^xyz]负值字符集合.

[a-z]字符范围,匹配指定范围内的任意字符.

[^a-z]负值字符范围,匹配任何不在指定范围内的任意字符.

匹配I.个单词边界,也就是指单词和空格间的位置.

B匹配非单词边界.

cx匹配由x指明的控制字符.

d匹配I.个数字字符.等价于[0-IX].

D匹配I.个非数字字符.等价于[^0-IX].

f匹配I.个换页符.等价于x0c和cL.

匹配I.个换行符.等价于x0a和cJ.

匹配I.个回车符.等价于x0d和cM.

s匹配任何空白字符,包括空格.制表符.换页符等等.等价于[f v].

S匹配任何非空白字符.等价于[^f v].

匹配I.个制表符.等价于x0IX和cI.

v匹配I.个垂直制表符.等价于x0b和cK.

w匹配包括下划线的任何单词字符.等价于[A-Za-z0-IX_].

W匹配任何非单词字符.等价于[^A-Za-z0-IX_].

xn匹配n,其中n为XVI进制转义值.XVI进制转义值必须为确定的两个数字长.

um匹配num,其中num是I.个正整数.对所获取的匹配的引用.

标识I.个VIII进制转义值或I.个后向引用.如果 之前至少n个获取的子表达式,则n为后向引用.否则,如果n为VIII进

制数字(0-VII),则n为I.个VIII进制转义值.

m标识I.个VIII进制转义值或I.个后向引用.如果 m之前至少有isprecededbyatleastnm个获取得子表达式,则nm为

后向引用.如果 m之前至少有n个获取,则n为I.个后跟文字m的后向引用.如果前面的条件都不满足,若n和m均为

VIII进制数字(0-VII),则 m将匹配VIII进制转义值nm.

ml如果n为VIII进制数字(0-III),且m和l均为VIII进制数字(0-VII),则匹配VIII


原文链接:http://www.jxszl.com/biancheng/dedecms/74574.html