2012-06-12 58 views
3

DocBlockr 一個正則表達式SublimeText2 可讓您根據變量的名稱申報您的自定義變量類型的規則。SublimeText2插件設置:逃離美元符號在DocBlockr插件的設置

自述:

"jsdocs_notation_map": [{ 
    "regex": "tbl_?[Rr]ow", // any arbitrary regex to test against the var name 
    "type": "TableRow"  // you can add your own types 
}] 

我想趕上那與$字符開頭的變量

例如:

"jsdocs_notation_map": [{ 
    "regex": "^[$].+",  // any word that starts with $ 
    "type": "HTMLElement" // That is its type 
}] 

從而使$header將從被抓以上正則表達式。

不幸的是,上述不起作用。該插件不會將我的$header變量 識別爲「HTMLElement」。

我曾嘗試以下的正則表達式的字符串:

  • $ - 它匹配的一切,甚至沒有任何$裏面他們varnames。
  • \\$
  • \\\\$
  • $$
  • \\$$
  • \\\\$$
  • [$]
  • [\\$]

旁註:編輯不會讓我插入奇數的\

所有這些都不匹配,除了第一個匹配所有東西。

這不是RegEx問題。應該工作的正則表達式,(例如:^[$].+根本不會因$字符而起作用。我認爲它與插件設置機制以及$是如何由python解析機制使用有關。

旁註:"^[.].+" RegEx按預期工作。

任何幫助是最歡迎

PS:如果有人能有所幫助,我想在正則表達式匹配字符串的開始「^」。我認爲它不會起作用,但如果沒有,請分享這方面的知識。

+0

我編輯你的正則表達式是內聯代碼 - 我不知道你最初的意圖顯示多少反斜槓,因爲SO是剝離出一些。您可能需要仔細檢查它們是否如您所期望的那樣。 – Eric

回答

1

哦,嘿...所以插件做的是從變量/函數名稱中去除任何前導$_,然後應用正則表達式。這是因爲_foo$foofoo都可以用相同的正則表達式來識別,因爲那時我沒有考慮那些具有特殊含義的字符。看起來它最終實際上是一個完全錯誤的特徵。看起來你花了一些時間在黑客身上,對不起。我的added it to the issue tracker現在。在將來,這將是一個很好的方式來吸引我的注意力:)

+0

現在已經修復和部署。讓我知道是否有任何問題。 – nickf

0

$是行尾,所以你可以嘗試把它放在方括號作爲替代企圖逃脫它...所以像[$] [^ \ s] +

+0

試過了,沒什麼。 – basiloungas

0

"\\$"應該工作。第一個\轉義第二個在JSON中使用。這然後產生正則表達式\$,它符合字面美元。

+0

不幸的是,它不起作用。它不會匹配這個詞。 – basiloungas

0

"^[$].*"

^部隊對行的開頭匹配。 []這裏用於逃避$(它比找出需要多少層反斜槓更容易),並且+*匹配後面的所有內容。如果您想匹配一個或多個字母數字/下劃線字符,則可以用[a-zA-Z0-9_]+代替.*

+0

^是行的開始\ ^是字符串的開始。 –

+0

一般來說,我會編輯以使其更清晰。在這種情況下,'matched = re.search(rule ['regex'],name)'[here](https://github.com/spadgos/sublime-jsdocs/blob/f9f4aa6747915fc09f3484d74f13bc7acc2c86e3/jsdocs.py#L279)的字符串*是*行的開始。 'v =「$ my_variable」; re.search(「^ [$]。*」,v)* *會返回一個匹配項。 (我做了一個假設,在上面鏈接的代碼中,'name'指的是一個令牌而不是整行文本。) – bstpierre

+0

我明白上述。不幸的是,如果正則表達式有$符號,它將無法按預期工作,在插件設置文件中使用。 – basiloungas