国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > regex > 正文

代替正則――HyperScriptExpression聯合開發倡議公告

2020-01-20 22:27:55
字體:
來源:轉載
供稿:網友
正則的難寫和復雜語法使得出學者們難以接觸。為了解決這個難題,本人決定請諸位和本人一起開發HyperScriptExpression(以后簡稱HSE)。HSE全部使用標記(Marked)形式,語法規整,例如:
正則/d{2}-/d{5}的等價HSE為:<rep=2><digit></rep>-<rep=5><digit></rep>
正則<(.*)>.*<///1>的等價HSE為<<rem(><*><any></*><)>><*><any></*></<rem=1>>
正則^Chapter [1-9][0-9]{0,1}的等價HSE為:<@start>Chapter <in>1-9</in><rep=0,1><in>0-9</in></rep>
正則(/w)+[@]{1}((/w)+[/.]){1,3}(/w)+的等價HSE為:<+><word></+><rep1>@</rep><rep=1,3><word+>.</rep><word+>
HSE 語法注釋
<>轉移符號。<用<代替。>用>代替
<@start>匹配輸入字符串的開始位置。如果設置了 HSE 對象的 Multiline 屬性,<@start> 也匹配<crlf>或<cr>之后的位置。
<@over>匹配輸入字符串的結束位置。如果設置了 HSE 對象的 Multiline 屬性,<@over> 也匹配<crlf>或<cr>之前的位置。
<*></*>匹配前面的子表達式零次或多次。例如,z<*>o</*> 能匹配 "z" 以及 "zoo"。等價于<least=0></least>。
<+></+>匹配前面的子表達式一次或多次。例如,'z<+>o</+>' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。等價于<least=1></least>。
<sel></sel>匹配前面的子表達式零次或一次。例如,"do<sel>es</sel>" 可以匹配 "do" 或 "does" 中的"do" 。 等價于<rep=0,1></rep>。
<rep=n></rep>n 是一個非負整數。匹配確定的 n 次。例如,'<rep=2>o</rep>' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
<least=n></least>n 是一個非負整數。至少匹配n 次。例如,'<least=2>o</least>' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。
<rep=m,n></rep>m 和 n 均為非負整數,其中n >= m。最少匹配 m 次且最多匹配 n 次。例如,"<rep=1,3>o</rep>" 將匹配 "fooooood" 中的前三個 o。請注意在逗號和兩個數之間不能有空格。
NG屬性當該字符緊跟在任何一個其他限制符后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對于字符串 "oooo",'<+ NG>o</+>' 將匹配單個 "o",而 '<+>o</+>' 將匹配所有 'o'。
<anything>或<any>匹配除 "<crlf>" 之外的任何單個字符。要匹配包括 '<crlf>' 在內的任何字符,請使用象 '<in><any><crlf></in>' 的模式。
<rem(>p</)>或
<rem>p</rem>
匹配 p 并獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,使用 SubMatches 集合,$0…$9 屬性。
<(>pattern</)>匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以后使用。這在使用 "或" 字符 (|) 來組合一個模式的各個部分是很有用。例如, 'industr<(>y<or>ies</)> 就是一個比 'industry|industries' 更簡略的表達式。
<eq>pattern</eq>正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。例如, 'Windows <eq>95<or>98<or>NT<or>2000</eq>' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字符,也就是說,在一個匹配發生后,在最后一次匹配之后立即開始下一次匹配的搜索,而不是從包含預查的字符之后開始。
<neq>pattern</neq>負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以后使用。
x<or>y匹配 x 或 y。例如,'z<or>food' 能匹配 "z" 或 "food"。'<(>z<or>f</)>ood' 則匹配 "zood" 或 "food"。
<in></in>字符集合。匹配所包含的任意一個字符。例如,'<in>abc</in>' 可以匹配 "plain" 中的 'a'。
<nin></nin>負值字符集合。匹配未包含的任意字符。例如,'<nin>abc</nin>' 可以匹配 "plain" 中的'p'。
<in>a-z</in>字符范圍。匹配指定范圍內的任意字符。
<nin>a-z</nin>負值字符范圍。匹配任何不在指定范圍內的任意字符。
<border></border>匹配一個單詞邊界,也就是指單詞和空格間的位置。
<nborder></nborder>匹配非單詞邊界。<border>的否定。
<control=x>匹配由 x 指明的控制字符。例如,<control=M> 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 <control> 視為 <nothing> 字符。
<digit>匹配一個數字字符。可以使用<digit+>,<digit*>,<digit?>格式。下同。
<ndigit>匹配一個非數字字符。
<page>匹配一個換頁符。
<crlf>匹配一個換行符。
<cr>匹配一個回車符。
<blank>匹配任何空白字符,包括空格、制表符、換頁符等等。
<nblank>匹配任何非空白字符。
<tab>匹配一個制表符。
<vtab>匹配一個垂直制表符。
<word>匹配包括下劃線的任何單詞字符。
<nword>匹配任何非單詞字符。
<hex=n>匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。
<call=num>匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'<rem><any></rem><call=1>' 匹配兩個連續的相同字符。
<oct=n>標識一個八進制轉義值。
<unicode=n>匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字符。例如, /u00A9 匹配版權符號 (©)。
<nothing>或者
<nil>
匹配空字符。用于選擇,比如<nothing><or>a<or>b<or>c<or>d代表a,b,c,d或者沒有(空字符)。
<total>強制性全部字符串匹配。比如<total>HS<in>DEF</in>可匹配HSD但不可以匹配HSDB中的HSD。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 缙云县| 元江| 巴楚县| 临洮县| 济源市| 郯城县| 丹东市| 曲阜市| 上高县| 浦东新区| 黔南| 游戏| 泌阳县| 寿阳县| 大厂| 郑州市| 建平县| 永宁县| 金溪县| 衡山县| 云南省| 玉田县| 南汇区| 闽侯县| 阿勒泰市| 长海县| 丰都县| 新津县| 若羌县| 井陉县| 濮阳市| 乌兰察布市| 无锡市| 新余市| 白朗县| 嫩江县| 太康县| 黄冈市| 油尖旺区| 宝应县| 建阳市|