首页 > 后端开发 > Golang > 正文

如何在 Go 的正则表达式中实现负集:避免意外结果的指南

Susan Sarandon
发布: 2024-10-26 07:23:02
原创
769 人浏览过

 How to Implement Negative Set in Regex for Go: A Guide to Avoiding Unexpected Results

在 Go 的正则表达式中实现负集

提供的正则表达式旨在捕获不以特定文件扩展名结尾的文件名(例如、htm、html、class、js)。然而,Go 中使用 regexp 包的实现会产生与在线正则表达式解析器不同的结果。

出现这种差异是因为 Go 标准库的 RE2 正则表达式引擎不支持负向查找(即,在原表达)。因此,它无法排除以指定文件扩展名结尾的字符串。

要复制在线正则表达式解析器的行为,您可以考虑以下方法:

  • 使用正向前瞻 (?!.(htm|html|class|js)$): 这断言输入字符串不以指定的文件扩展名之一结尾。
<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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!