我想爲EViews編寫一個Sublime Text 3語法,並且需要找到一個正則表達式來選擇列表中的第二項當且僅當第一個元素成對出現在行首(忽略任何前導空格)。正則表達式在配對詞的列表中找到第二個詞
我可以單對做到這一點,說if then
,與
^\s*if.+(then)
,但它似乎很笨拙,爲每一對單獨做到這一點。
當然有更聰明的方法嗎?
配對的完整列表是if then
,for to
,to step
,else if
和subroutine local
。
我想爲EViews編寫一個Sublime Text 3語法,並且需要找到一個正則表達式來選擇列表中的第二項當且僅當第一個元素成對出現在行首(忽略任何前導空格)。正則表達式在配對詞的列表中找到第二個詞
我可以單對做到這一點,說if then
,與
^\s*if.+(then)
,但它似乎很笨拙,爲每一對單獨做到這一點。
當然有更聰明的方法嗎?
配對的完整列表是if then
,for to
,to step
,else if
和subroutine local
。
使用this regex:
\s*\bif\b.*?\b(then)\b|\s*\bfor\b.*?\b(to)\b|\s*\bto\b.*?\b(step)\b|\s*\belse\b.*?\b(if)\b|\s*\bsubroutine\b.*?\b(local)\b
第1組比賽then
,第2輪的比賽to
,組3匹配step
,組4匹配if
,組5匹配local
,只有那些前面有正確的單詞。
你可以試試這個:
^\s*if\s+\b(then)\b.*|^\s*for\s+\b(to)\b.*|^\s*to\s+\b(step)\b.*|^\s*else\s+\b(if)\b.*|^\s*subroutine\s+\b(local)\b.*
確保點新行匹配不選擇