我想使用Python和正則表達式計算包含在C代碼中的評論字符,但沒有成功。我可以先刪除字符串以擺脫字符串中的註釋,但是這也會在註釋中刪除字符串,並且結果將會很糟糕。有沒有機會通過使用正則表達式來匹配註釋中的字符串,反之亦然?在評論中的字符串和字符串的評論
0
A
回答
6
不,不是真的。
正則表達式不是像你描述的那樣解析嵌套結構的正確工具;相反,你需要解析C語法(或者你感興趣的「啞子」),你可能會發現正則表達式有幫助。一個相對簡單的具有三種狀態(CODE,STRING,COMMENT)的狀態機就可以做到。
+2
您可能需要字符常量的第四個狀態。在C中,文本「/ *」是一個多字符字符常量;它有未定義或實現定義的行爲,但不會發起評論。 – 2010-04-04 20:58:49
2
正則表達式並不總是real parser的替代品。
2
可以去掉,通過搜索的正則表達式是不評論的所有字符串:
'[^'\r\n]+'|(//.*|/\*(?s:.*?)\*/)
,並替換:
$1
從本質上講,這個搜索正則表達式string|(comment)
這匹配字符串或註釋,捕獲註釋。如果匹配字符串,或者評論匹配,那麼替換或者不是。
儘管正則表達式不能替代真正的解析器,但您可以通過創建一個巨大的正則表達式來交替所有您感興趣的令牌(本例中爲註釋和字符串),從而快速構建一個基本的解析器。如果您要編寫一些代碼來處理註釋,但不是字符串中的代碼,請遍歷上述正則表達式的所有匹配項,並在第一個捕獲組中參與匹配時對其中的字符進行計數。
相關問題
- 1. 評論中的字符串
- 2. 從C#中的字符串中刪除HTML標籤和評論?
- 3. 如何永遠擴展評論和字符串中的yasnippets
- 4. MySQL:在評論字符串中搜索關鍵字
- 5. 多字符評論字符串Spark CSV閱讀器
- 6. PCRE:搜索未評論的字符串或註釋塊內的字符串?
- 7. 如何評論重組文本中的字符串?
- 8. 防止str_replace評論字符串中的php代碼
- 9. 根據xslt中的子元素字符串評論父元素
- 10. 評論字符串中的上下文敏感度
- 11. 如何評論SOAP UI編輯器中的代碼字符串?
- 12. 在vim中根據搜索字符串添加評論
- 13. 治癒'字符串「 - 」在評論中不允許。「例外?
- 14. 查找但跳過字符串和評論?
- 15. .NET格式化字符串 - 評論的最佳實踐?
- 16. 從C#字符串中刪除JavaScript評論#
- 17. 評價在字符串
- 18. 評估字符串arrayName中
- 19. 評論字符串修復emacs ruby模式突出顯示
- 20. /**評論。 */VS/*評論* /在Java中
- 21. 在評論中的換行符textareas
- 22. Clojure宏字符串評估
- 23. 評估字符串模板
- 24. 從字符串評估Typescript?
- 25. Excel VBA字符串評估
- 26. Facebook評論:全部評論
- 27. fb:comments - 如何評論評論
- 28. 如何使用Django的評論框架評論評論
- 29. 從評論框(Facebook評論插件)中刪除評論
- 30. 評估jmeter中的字符串值
這是不應該使用正則表達式的東西之一,我相信 – 2010-04-04 20:47:09