经典正则表达式

1。正则表达式[将font标签转换为span
    <div style="font-size:14px;">
<p style="margin-buttom:24px;line-height:24px;"><span style="color:#ff0000"><b>春花秋月何时了</b></font></p>
<p style="margin-buttom:24px;line-height:24px;">  <font color="#ffffa0"><b>往事知多少</b></font>,<font color="#a0a0ff"><i>小楼</i></font>昨夜<font color="#ffffa0"><b>又东</b></font>风<font color="#a0ffa0"><b>故国不堪回首月明中 </b></font></p>
</font></div>
将其翻译成vim正则语言代码:
%s!<font\s\+color="\([^"]\+\)"><b>\(.\{-}\)</b></font>!<span style="color:\1;font-weight:bold;">\2</span>!g
%s!<font\s\+color="\([^"]\+\)"><i>\(.\{-}\)</i></font>!<span style="color:\1;font-style:italic;">\2</span>!g
%s!<font\s\+color="\([^"]\+\)">\(.\{-}\)</font>!<span style="color:\1;">\2</span>!g
请在命令模式下输入:之后逐条运行。
第一条是处理font内嵌b标签的;
第二条是处理font内嵌i标签的;
第三条是处理其它情况的。如果您有其它的内标签,可以在2之后,3之前,插入新的规则。
如果不存在相应的匹配,vim会有提示,忽略即可。
以下是perl完整程序:
#!/usr/bin/perl

$text = <<END;
<div style="font-size:14px;">
<p style="margin-buttom:24px;line-height:24px;"><span style="color:#ff0000"><b>春花秋月何时了</b></font></p& gt;
<p style="margin-buttom:24px;line-height:24px;">  <font color="#ffffa0"><b>往事知多少</b></font>,<font color="#a0a0ff"><i>小楼</i></font>昨夜<font color="#ffffa0"><b>又东</b></font>风<font color="#a0ffa0"><b>故国不堪回首月明中 </b></font></p>
</font></div>
END

$text =~ s!<font\s+color="([^"]+)"><b>(.*?)</b></font>!<span style="color:$1;font-weight:bold">$2</span>!sig;
$text =~ s!<font\s+color="([^"]+)"><i>(.*?)</i></font>!<span style="color:$1;font-style:italic;">$2</span>!sig;
$text =~ s!<font\s+color="([^"]+)">(.*?)</font>!<span style="color:$1;">$2</span>!sig;
print $text;

2。去掉注释正则表达式
PHP 代码: $result preg_replace('%(?<!\b(["\'])[^\1]+)/\*(?:(?!\*/).)*?\*/(?![^\'"]*?[\'"]\W)%'''$subject);

3。过滤指定html标签的正则表达式(P标签(只是TD标签内的P标签,其他的P不过滤))
VB6Dim ResultString As String
Dim myRegExp As RegExp
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "(<td[^>]*>\s*)<p[^>]*>([^<]+)</p>\s*(</td>)"
ResultString = myRegExp.Replace(SubjectString, "$1$2$3")
VB.NET
Dim ResultString As String
Try
    Dim RegexObj As New Regex("(?<=<td[^>]*>\s*)<p[^>]*>([^<]+)</p>\s*(?=</td>)", RegexOptions.IgnoreCase)
    ResultString = RegexObj.Replace(SubjectString, "$1")
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try
或者
Dim ResultString As String
Try
    Dim RegexObj As New Regex("(<td[^>]*>\s*)<p[^>]*>([^<]+)</p>\s*(</td>)", RegexOptions.IgnoreCase)
    ResultString = RegexObj.Replace(SubjectString, "$1$2$3")
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try

其它办法:(?<=<td[^>]*>\s*)<p[^>]*>([^<]+)</p>(?=\s*(?:</td>))
匹配出来的结果,替换为第一个捕获组就可以了

4。取出HTML中某段字符串[PHP]
可以将需要的部分先预处理一下:$result preg_replace('%^.*?<table[^>]+>|</table>.*?$%s'''$tmp);
1. “查询结果”之前的垃圾文字可以删除:^.*?(?=查询结果)
2. 新行中有数字、英文、空格之类的字符,无用,可以删除:^[0-9a-zA-Z\s]{0,3}
3. 删除tags,保留<br>:<(?!br)[^>]+>

$result preg_replace('%^.*?<table[^>]+>|</table>.*?$%s'''$tmp); 
$result preg_replace('/^.*?(?=查询结果)|<(?!br)[^>]+>|^[0-9a-zA-Z\s]{0,3}/simx'''$result); 


5。偶数个a奇数个b的正则
^(([^b]*b[^b]*){2})*[^b]*b[^b]*$|^(([^a]*a[^a]*){2})+$

6。一个关于星期+日期的正则表达式
(?:MO|TU|WE|TH|FR|SA|SU)(?:0[1-9]|[1-2]\d|3[0-1])(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)
使用(?:...)表示只群集,不捕获,以提升效率。

7。匹配任意中文s/^\[\w*\]\.//
8。括号前为一位或两位字母;括号内第一位为数字,后跟0~3位数字或字母
perl正则表达式代码:s/(?<=[a-z])\(|\)(?=[ -])//ig;

9。在EXCEL里提取数据的程序
Sub GetAuthorAndPress()''
GetAuthorAndPress Macro'   
Dim myRegExp As Object   
Dim Myrange As Range, C As Range    
Set myRegExp = CreateObject("vbscript.regexp")    
' 设置RegExp 的属性   
'myRegExp.Pattern = "^(.*?)编(?:译)?。(.*?)出版社"   
myRegExp.Pattern = "(.*?)编(?:译)?。(.*?)出版社"      
Set Myrange = Sheet1.Range("B1:B4")    
For Each C In Myrange       
Set myMatches = myRegExp.Execute(C.Value)       
If myMatches.Count >= 1 Then           
Set myMatch = myMatches(0)           
If myMatch.SubMatches.Count >= 1 Then               
C.Offset(0, 2) = myMatch.SubMatches(0)               
C.Offset(0, 3) = myMatch.SubMatches(1) + "出版社"            
End If       
End If   
Next
End Sub


10。
300*300
 文章首页关于迷茫时代关于我写意人生
版权所有:迷茫时代 All rights reserved   
执行时间:0.00623 秒