匹配每个以特定单词开头且未由 space 分隔的单词中特定字符的所有实例

Match all instances of a certain character inside every word preceded by a certain word and not delimited by a space

给定如下字符串:

word.hi。布拉。单词。

我想构建一个匹配所有“."s preceded by "word”和任何其他非 space 字符的正则表达式

因此,在上面的示例中,我希望匹配第一个、第二个和最后一个点。

虽然使用全局标志 (/(?:word.*)\K./gU) 可以很容易地匹配第一个点和最后一个点,但我不确定如何构建一个也可以匹配第二个点的正则表达式点.

感谢任何指点。

您可能会匹配 word,然后使用 \G 锚获取所有连续的匹配,不包括匹配的空白字符或点。

(?:\bword|\G(?!\A))[^.\s]*\K\.

部分

  • (?:非捕获组
    • \bword 匹配 word 前面有单词边界
    • |
    • \G(?!\A) 断言上一场比赛结束时的位置,而不是开始
  • )关闭非捕获组
  • [^.\s]* 匹配除 . 或空白字符
  • 之外的任何字符的 0+ 次出现
  • \K清空匹配缓冲区(忘记之前匹配的是什么)
  • \.匹配一个点

Regex demo