2016-03-10 74 views
1

無法找到任何可用的RegExp示例來匹配文本文件中的所有jsDoc註釋塊。RegEx for jsDoc註釋

基本上,它需要找到滿足下列規則的所有塊:

  • 開始與/**,接着是一個或多個換行符
  • */
  • 完在該塊可以有任何東西,包括代碼示例和HTML。

我試圖將代碼從jsdoc-regex,但沒有奏效:

/[^\S\r\n]*\/(?:\*{2})([\W\w]+?)\*\/([\W\w]+?)?(?=\s+\/\*{1,2}|$)/g; 

注:

我解析通用文本文件,不一定JavaScript,因此我可以」不要使用像Esprima這樣的JS解析器。

UPDATE:

要改寫我的問題,我堅持試圖定義一個正則表達式規則說的表達必須以*/結束,而有可能是(塊內)之前的任何東西,即通過本例中的任何事物意味着除*/之外的任何事物。

SOLUTION:

感謝你的答案被@ m93a,他的實現已成爲一個有價值的除了decomment,選項ignore

+0

你可以使用像esprisima這樣的js解析器嗎? –

+0

@ DanielA.White不,我不能爲此使用額外的解析器,我只能在我的示例中使用RegExp,這是通用的,並且可以有效地匹配任何內容。 jsDoc只是我被困住的一個例子。 –

+0

你能告訴我們更多你試過的東西嗎?看起來你希望有人會給你答案,而不是試圖學習RegExp並試圖實現你自己的。這不是這個網站的內容。 –

回答

4

建立你的表達:教程

  1. / / - 空表達
  2. /\/\*\*/ - 比賽/**(逃脫)
  3. /\/\*\*\s*\n/ - 後跟一個換行符(空白字符可能在之前丁)
  4. /\/\*\*\s*\n\*\// - 比賽*/(逃脫)
  5. /\/\*\*\s*\n[^\*]\*\// - 任何東西,但*
  6. /\/\*\*\s*\n[^\*]*\*\// - 可以重複任意次數
  7. /\/\*\*\s*\n[^\*]*()?\*\// - 如下的可選組
  8. /\/\*\*\s*\n[^\*]*(\*[^\/])?\*\// - *跟隨任意其他炭比/
  9. /\/\*\*\s*\n([^\*]*(\*[^\/])?)*\*\// - 整個事情可以重複
  10. /\/\*\*\s*\n([^\*]*(\*[^\/])?)*\*\// - Tadaa!美麗,不是嗎?
+1

第一個要求是什麼呢?......,然後是一個或多個換行符? –

+0

@ vitaly-t好點,沒有正確地閱讀這個問題。現在修復。 – m93a

+1

感謝你,這已經爲[decomposit](https://github.com/vitaly-t/decomment),選項[ignore](https:// github。COM /維塔利-T/decomment#optionsignore - 正則表達式 - 正則表達式)。 –