首页 > 解决方案 > 正则表达式匹配在第 1 组中出错

问题描述

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

标签: javaregexmatchingregex-group

解决方案


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

请注意,这部分[body]是匹配b o dy不属于第一组的字符类。

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

在零件

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

正则表达式演示


推荐阅读