gpt4 book ai didi

不使用 `$` 的正则表达式匹配字符串结尾

转载 作者:行者123 更新时间:2023-12-05 09:18:49 25 4
gpt4 key购买 nike

我在做 regex golf前几天,任务是在不使用 $ 的情况下匹配字符串末尾的“u”。目标是匹配“fu”、“tofu”和“snafu”,但不匹配“futz”、“fusillade”、“functional”或“discombobulated”。

我想出了 fu[^tsn],它适用于 regex101 ;但是,由于某种原因它与“fu”、“tofu”和“snafu”中的任何一个都不匹配,因此它没有通过测试。我想知道为什么它不起作用,以及是否有更聪明的方法来解决这个问题(奖励:在现实生活中是否存在不使用 $ 会更好的情况)。

最佳答案

您可以在 https://stackoverflow.com/a/22944075/224671 中找到可用正则表达式元素的列表。 .您可以尝试通过 RegexGolf 测试的一些内容:

  • \b:匹配单词边界,假设输入始终是单个单词
  • \z\Z:匹配字符串结尾(注意:JavaScript 不支持)
  • (?!.):否定先行,只要没有下一个字符就匹配,语义等同于$

您的正则表达式在 regex101 中“有效”的原因是 [^tsn] 匹配了 fu 旁边的换行符。但在 RegexGolf 中,它期望 fu 是整个输入,因此匹配失败。所以在使用 regex101 进行测试时要小心。也许在您的情况下切换到“单元测试”模式会更好。

关于不使用 `$` 的正则表达式匹配字符串结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43340476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com