正则表达式匹配在第 1 组中出错

regex match getting wrong in group 1

我有一个字符串,我需要这种模式 $body.anyname$body.anyname.anyname 或像这样,但不像 $body.anyname. 我写了这个正则表达式 $[body](\w+((\[\d\]){0,}\.\w+(\[\d\]){0,}){0,}) 它匹配整个字符串,但我需要第 1 组中的 body.anyname,但是得到 ody.anyname 这可以通过字符串操作来完成,但出于某种原因我需要使用正则表达式.在此处检查正则表达式 https://regex101.com/r/PigNVO/1/

您可以对右侧的空白边界使用和断言来排除点。

请注意,这部分 [body] 是匹配 b o dy 的字符 class,而不是 y 的一部分第一组.

$(body(?:\.\w+)+)(?!\S)

部分

  • $ 匹配 $
  • ( 捕获组 1
  • body字面匹配
    • (?:\.\w+)+ 重复 1+ 次匹配一个点和 1+ 个单词字符
  • ) 关闭组 1
  • (?!\S) 断言右边的空白边界

Regex demo