功能簡(jiǎn)介:
支持僅使用表達(dá)式里的選中部分進(jìn)行匹配
支持樹(shù)形和表格兩種結(jié)果查看方式
選中樹(shù)結(jié)點(diǎn)或單元格時(shí)自動(dòng)選中源文本中對(duì)應(yīng)的部分
表格內(nèi)容可導(dǎo)出為csv文件(在表格模式下,右擊結(jié)果,選擇彈出菜單里的"導(dǎo)出(*.csv)")
支持拖入文件作為匹配源文本
支持快捷鍵操作(F5運(yùn)行, F4切換查詢(xún)替換模式, F6切換結(jié)果顯示方式, F2復(fù)制代碼, F8切換焦點(diǎn))
支持生成并拷貝C#代碼到系統(tǒng)剪切板
支持忽略大小寫(xiě),單行模式,多行模式,忽略空白,顯式匹配等多種選項(xiàng)
自動(dòng)加載上次關(guān)閉前運(yùn)行的最后一組數(shù)據(jù)
可解析類(lèi)似new Regex("abc", RegexOptions.Singleline | RegexOptions.Multiline)格式的C#代碼
正則表達(dá)式的預(yù)搜索:
正則表達(dá)式:(?<=src=").*?(?=") "表示轉(zhuǎn)義,即雙引號(hào)"
其中(?<=)為反向預(yù)搜索,表示要匹配的字符串前面必須是scr="
(?=)為正向預(yù)搜索,表示要匹配的字符串后面必須是"
.*?表示要匹配的部分
比如:
正式表達(dá)式:(?<=src=").*?(?=")
待測(cè)試的文本:<img src="/UploadFiles/image/20140304/20140304094318_2971.png" alt="正則表達(dá)式測(cè)試工具RegexTester" />
那么執(zhí)行這個(gè)正則表達(dá)式后,就可以提取出/UploadFiles/image/20140304/20140304094318_2971.png
正則表達(dá)式入門(mén):
b匹配單詞的開(kāi)始或結(jié)束
*表示重復(fù)0零次或多次
?表示重復(fù)0次或1次
+表示重復(fù)1次或多次
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n到m次
.表示除了換行符以外的任意字符
.*連在一起就意味著任意數(shù)量的不包含換行的字符
d表示一位數(shù)字(0,或1,或2…或9)
s表示任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格
w匹配字母或數(shù)字或下劃線(xiàn)或漢字
^匹配字符串的開(kāi)始
$匹配字符串的結(jié)束
表示轉(zhuǎn)義,比如"表示",(表示(
[]表示范圍,比如[.?!]匹配標(biāo)點(diǎn)符號(hào)(.或?或!),[0-9]代表的含意與d就是完全一致的:表示1位數(shù)字;同理[a-z0-9A-Z_]也完全等同于w(如果只考慮英文的話(huà))
|表示分支(或者),比如d{5}-d{4}|d{5}這個(gè)表達(dá)式用于匹配美國(guó)的郵政編碼。美國(guó)郵編的規(guī)則是5位數(shù)字,或者用連字號(hào)間隔的9位數(shù)字。之所以要給出這個(gè)例子是因?yàn)樗苷f(shuō)明一個(gè)問(wèn)題:使用分枝條件時(shí),要注意各個(gè)條件的順序。如果你把它改成d{5}|d{5}-d{4}的話(huà),那么就只會(huì)匹配5位的郵編(以及9位郵編的前5位)。原因是匹配分枝條件時(shí),將會(huì)從左到右地測(cè)試每個(gè)條件,如果滿(mǎn)足了某個(gè)分枝的話(huà),就不會(huì)去再管其它的條件了。
我們已經(jīng)提到了怎么重復(fù)單個(gè)字符(直接在字符后面加上限定符就行了);但如果想要重復(fù)多個(gè)字符又該怎么辦?你可以用小括號(hào)來(lái)指定子表達(dá)式(也叫做分組),然后你就可以指定這個(gè)子表達(dá)式的重復(fù)次數(shù)了,你也可以對(duì)子表達(dá)式進(jìn)行其它一些操作(后面會(huì)有介紹)。
(d{1,3}.){3}d{1,3}是一個(gè)簡(jiǎn)單的IP地址匹配表達(dá)式。要理解這個(gè)表達(dá)式,請(qǐng)按下列順序分析它:d{1,3}匹配1到3位的數(shù)字,(d{1,3}.){3}匹配三位數(shù)字加上一個(gè)英文句號(hào)(這個(gè)整體也就是這個(gè)分組)重復(fù)3次,最后再加上一個(gè)一到三位的數(shù)字(d{1,3})。
IP地址中每個(gè)數(shù)字都不能大于255. 經(jīng)常有人問(wèn)我, 01.02.03.04 這樣前面帶有0的數(shù)字, 是不是正確的IP地址呢? 答案是: 是的, IP 地址里的數(shù)字可以包含有前導(dǎo) 0 (leading zeroes).
不幸的是,它也將匹配256.300.888.999這種不可能存在的IP地址。如果能使用算術(shù)比較的話(huà),或許能簡(jiǎn)單地解決這個(gè)問(wèn)題,但是正則表達(dá)式中并不提供關(guān)于數(shù)學(xué)的任何功能,所以只能使用冗長(zhǎng)的分組,選擇,字符類(lèi)來(lái)描述一個(gè)正確的IP地址:((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)。
理解這個(gè)表達(dá)式的關(guān)鍵是理解2[0-4]d|25[0-5]|[01]?dd?
W匹配任意不是字母,數(shù)字,下劃線(xiàn),漢字的字符
S匹配任意不是空白符的字符
D匹配任意非數(shù)字的字符
B匹配不是單詞開(kāi)頭或結(jié)束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou這幾個(gè)字母以外的任意字符
例子:S+匹配不包含空白符的字符串。
<a[^>]+>匹配用尖括號(hào)括起來(lái)的以a開(kāi)頭的字符串。
您的評(píng)論需要經(jīng)過(guò)審核才能顯示
有用
有用
有用