Go 中是否可以使用多行来打破复杂的正则表达式?创建更具可读性的代码将有很大帮助。
\n\n例如,在 Scala、Ruby、JavaScript 中,可以使用x标志:
x \xe2\x80\x94 Free-spacing and line comments (aka extended mode)
它允许编写正则表达式,例如:
\n\n TAXON_CONCEPTS2 = /\\s+\n (\\(?s\\.\\s?s\\.|\n \\(?s\\.\\s?l\\.|\n \\(?s\\.\\s?str\\.|\n \\(?s\\.\\s?lat\\.|\n sec\\.|sec|near)\\b.*$/x\nRun Code Online (Sandbox Code Playgroud)\n\n我想在 Go 中实现类似的代码,而不是:
\n\nvar taxonConceptsRe2 = regexp.MustCompile(`(,\\s*|\\s+)(\\(?s\\.\\s?s\\.|\\(?s\\.\\s?l\\.|\\(?s\\.\\s?str\\.|\\(?s\\.\\s?lat\\.).*$`)\nRun Code Online (Sandbox Code Playgroud)\n
您有几个选项可以提高像这样的正则表达式的可读性。
分割字符串:
pattern := `(,\s*|\s+)` +
`(\(?s\.\s?s\.|` +
`\(?s\.\s?l\.|` +
`\(?s\.\s?str\.|` +
`\(?s\.\s?lat\.).*$`
Run Code Online (Sandbox Code Playgroud)预解析字符串:
pattern := strings.Replace(`\s+
(\(?s\.\s?s\.|
\(?s\.\s?l\.|
\(?s\.\s?str\.|
\(?s\.\s?lat\.|
sec\.|sec|near)\b.*$`,
"\n ", "", -1)
Run Code Online (Sandbox Code Playgroud)
如果您选择这种方法,您可能需要构建一个函数来为您执行此操作,并且更加健壮。
不要使用正则表达式。(显然并不总是理想的,但正则表达式经常被过度使用,所以如果有意义的话就这样做。)