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