簡體   English   中英

解析注釋的VB代碼

[英]Parse VB code for comments

我制作了一個小型NodeJS應用程序,它可以針對大型代碼庫運行,以檢測代碼注釋中的某些單詞。 我無法將使用單引號' *.vb文件的注釋語法可靠地匹配為評論。

這是我到目前為止的正則表達式,這是不完美的: ^(?:[^"]+)'(.+)$

測試頁: https//regex101.com/r/V0CHV2/4

棘手的部分是不匹配字符串中的單引號。 這是我的測試用例。

''' <summary>
''' Runs the auth check.
''' </summary>
''' <param name="authToken">The auth token.</param>
Public Shared Sub AuthCheck(ByVal authToken As AuthToken)
  'This is a "comment" - oh yeah
  If Not authToken.Equals(foo, StringComparison.OrdinalIgnoreCase) Then 'else
    Throw New Exception("don't count this as a comment!") 'comment here
  End If
End Sub

我想出了這個變種:

^(?:(?:"(?:\\"|[^"])*")|[^"'])*\s*'+\s*(.*)

請注意,使用純正則表達式為這類東西編寫解析器可能很困難。 這似乎正確地提取了內容

這解決了這樣的情況:

func("This is \"Bob's\" string") ''' Comment!

重要的是不要在諸如\\"那里實際上不是字符串的結尾\\"類的東西上絆倒。

我會用\\s*'[^"\\n]*("[^"\\n]*"[^"\\n]*)*$給出一個鏡頭。你可以在你的樣本上看到regex101.com上的正則表達式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM