gpt4 book ai didi

javascript - 匹配点后的任何字符,直到下一个点或行尾

转载 作者:行者123 更新时间:2023-11-28 18:37:11 24 4
gpt4 key购买 nike

作为我的问题,我想匹配 asa .foo 中的 foo 。 assas 以及 bar .foo 的情况。

虽然我知道如何实现这些结束条件之一,但我不知道如何将它们组合起来。

我目前的工作是这样的:

/\.(.+?)(?=[\.|\Z])/g

最佳答案

我建议如下:

\.(\S*)(?=\.|$)

它是如何工作的:

\.    # . (Dot)
( # Capture Data (foo)
\S # Any Non-Whitespace Character
* # 0 or more times
)
(?= # Lookahead (Check) for...
\. # . (Dot)
| # OR
$ # End of String
)

您想要的数据存储在1st捕获组

Live Demo on Regex101

您可能想将其更改为:

.(\S+?)(?=.|$)

阅读@РоманПарадеев的评论

<小时/>

正则表达式存在问题:

\.(.+?)(?=[\.|\Z])
  • \. 没问题
  • .+? 没有任何意义(实际上,引用@РоманПарадеев的评论,你可能应该使用它)。
    • + 表示 1 或更多 次,而 * 表示 0 < em>或更多次。所以我可以看到你想要得到什么,但使用 (.*) 更简单(除非字符串中有多个 . ,并且你想要它是非贪婪的。再次引用@РоманПарадеев的评论)
  • [\.|\Z] 将无法按您的预期工作。
    • 首先,不需要转义\.,只需使用.。接下来,[] 内的任何字符都将被匹配。这意味着它将匹配 .|\Z。仅当在组内时才使用 |,例如 \.|\Z。最后,您可以使用 $ 代替 \Z
    • 这意味着可以 (?=\.|$) (?=[.\Z]) (\此处需要使用 Z,因为 $$ 字面匹配)

关于javascript - 匹配点后的任何字符,直到下一个点或行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36870129/

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