在 Go 的正则表达式中实现负集
提供的正则表达式旨在捕获不以特定文件扩展名结尾的文件名(例如、htm、html、class、js)。然而,Go 中使用 regexp 包的实现会产生与在线正则表达式解析器不同的结果。
出现这种差异是因为 Go 标准库的 RE2 正则表达式引擎不支持负向查找(即,在原表达)。因此,它无法排除以指定文件扩展名结尾的字符串。
要复制在线正则表达式解析器的行为,您可以考虑以下方法:
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>
请注意,这些表达式可能会产生不同的结果,因为它们以不同的方式实现逻辑。选择最适合您的用例的方法至关重要。
以上是如何在 Go 的正则表达式中实现负集:避免意外结果的指南的详细内容。更多信息请关注PHP中文网其他相关文章!