regex - 使用正则表达式从 Forth 源代码中剥离注释

标签 regex go comments tokenize

我试图以非贪婪的方式匹配括号之间的所有内容,包括括号。左括号前后应有一个空格(或左括号前一行的开头),右括号前后应有一个空格。取下面的文字:

 ( )
  ( This is a comment )
    1 2 +
\ a
: square dup * ;
( foo bar 
baz )
(quux)
( ( )
(
( )

应该匹配第一行,应该匹配包含其内容的第二行,不应匹配倒数第二行(或引发错误)并且应该匹配最后一行。两行 foo bar baz 应该匹配,但是 (quux) 不应该匹配,因为它在括号前后不包含空格。应匹配内部带有额外左括号的行。

我尝试了一些传统的正则表达式来匹配括号之间的内容,但没有取得多大成功。正则表达式引擎是 Go 的引擎。

最佳答案

re := regexp.MustCompile(`(?s)\(( | .*? )\)`)
s = re.ReplaceAllString(s, "")

Playground :https://play.golang.org/p/t93tc_hWAG

关于regex - 使用正则表达式从 Forth 源代码中剥离注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39267534/

相关文章:

regex - bash 正则表达式不匹配 "at least n times but not more than m"

javascript - 正则表达式在 JavaScript 排序功能中无法正常工作

go - 为什么 filepath.Walk() panic ?

mongodb - 如何使用 bulk.Insert() 将 interface{} 类型插入到 mongodb

function - 我应该写更多描述性的函数名称还是添加注释?

Posix 正则表达式搜索中的捕获组不正确

javascript - 正则表达式匹配与 jQuery 不同

go - 使用 cgo、LuaJIT 和 musl 构建静态二进制文件

HTML 注释行为

java - 如何在Javadoc中解释公共(public)类的提议