新增模式匹配

2021-09-08 03:07:50 字數 950 閱讀 6394

自定義語言的乙個好處就是可以隨時新增自己喜歡的語法,今天就給自己的語法加了個類似模式匹配的語法。

(*(

[$a, $b, $c]

[1,  

1,  

'y': 

'yes!

']

[ 1,  

1,  

'n': 

'no!']

[2,  ?,  ?  : 

'something wrong!

']

[?,  ?,  ?  : 

'op...

']

)*)

第一行,代表開始這一串語法

第二行,分別取a,b,c三個變數的值

第三行,如果三個變數的值為1,1,'y',則返回'yes'

第四行,語義同上

第五行,如果第乙個變數為2,另外兩個變數的值任意,則返回'something wrong!'

第六行,如果之前的條件均不滿足,則返回'op...'

第七行,代表這串語法的結束

簡單的理解的話就是相當於:

if ($a==

1 and $b==

1 and $c==

'y')

return

'yes!

';

else

if ($a==

1 and $b==

1 and $c==

'n')

return

'no!

';

else

if ($a==

2)return

'something wrong!

';

else

return

'op...

';

新語法更加簡單明瞭,在排版良好的前提下也更容易看出語義

shell之匹配模式和擴充套件匹配模式

首先說一下什麼是匹配模式,然後再介紹擴充套件匹配模式。匹配模式這個概念就算不知道,但是也都會使用這個功能找到匹配的檔案。例如 ls ab 找到所有以ab開頭的檔案。這就是利用了 可以匹配任意字串,包括空串。匹配模式是man bash中的pattern matching,星號的含義在上面講了。用來匹配...

perl 模式匹配

一 簡介 模式指在字串中尋找的特定序列的字元,由反斜線包含 def 即模式def。其用法如結合函式split將字串用某模式分成多個單詞 array split line 二 匹配操作符 檢驗匹配是否成功 result var abc 若在該字串中找到了該模式,則返回非零值,即true,不匹配則返回0...

模式匹配之路

之前我的文章中,介紹了kmp,bm,ac,wm等幾個經典的模式匹配演算法,本文我將對常用的模式匹配演算法做一小結。模式匹配演算法的關係圖如下所示 這裡有幾個我的文章中暫時沒有涵蓋的演算法,這裡做一簡要說明。rabin karp演算法,這是乙個基於雜湊值的模式匹配演算法,根據雜湊演算法,將長度為m的模...