[問題] 反向表列的正規式?

看板RegExp作者 (...)時間13年前 (2011/07/16 22:48), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/3 (看更多)
前言: 因為ctags沒有支援我正在用的程式語言(systemverilog) 於是上google尋找解法,在當中找到了一個範例,可以讓ctags支援SV 但是那個例子不夠周全,只好自己動動手,加入適當的Regex, 好讓它看起來更完整一點 問題一: typedef class Myclass; typedef enum { .... } enum_type; 上面兩行是程式碼中經常出現的code 我想單純的用兩個Regex把這兩種分開來 ^[ \t]*typedef[ \t]+.*[ \t]+([a-zA-Z_0-9]+)[ \t]*; 這會符合第一、二行code ^[ \t]*typedef[ \t]+enum[ \t]+.*[ \t]+([a-zA-Z_0-9]+)[ \t]*; 這會符合第二行code 要如何反向表列,才能使第一個Regex只會符合第一行而不包含第二行? 問題二: 有時候 code 會寫成這樣: typedef enum { AAA, BBB, ... } enum_type; ^[ \t]*typedef[ \t]+enum[ \t]+.*[ \t]+([a-zA-Z_0-9]+)[ \t]*; 紅色的部份該如何處理分行的部份比較好? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.76.252

07/17 22:10, , 1F
^.*typedef[ \t]+c.+$
07/17 22:10, 1F

07/17 22:10, , 2F
^.*typedef[ \t]+enum(.+\n)*.+enum_type;$
07/17 22:10, 2F
文章代碼(AID): #1E8QJG1d (RegExp)
文章代碼(AID): #1E8QJG1d (RegExp)