java - 正则表达式匹配在第 1 组中出错
问题描述
我有一个字符串,我需要这个模式$body.anyname
或$body.anyname.anyname
类似的,但不像$body.anyname.
我写的这个正则表达式\$[body](\w+((\[\d\]){0,}\.\w+(\[\d\]){0,}){0,})
它匹配整个字符串,但我需要第body.anyname
1 组,但是得到ody.anyname
这可以通过字符串操作来完成,但由于某种原因我需要使用正则表达式。在此处检查正则表达式https://regex101.com/r/PigNVO/1/
解决方案
您可以使用和断言右侧的空白边界来排除点。
请注意,这部分[body]
是匹配b
o
d
或y
不属于第一组的字符类。
\$(body(?:\.\w+)+)(?!\S)
在零件
\$
匹配$
(
捕获组 1body
从字面上匹配(?:\.\w+)+
重复 1+ 次匹配一个点和 1+ 个单词字符
)
关闭组 1(?!\S)
在右侧断言空白边界
推荐阅读
- c# - WebClient、httpWebRequest 和外部 zabbix .exe 无法连接到网盘
- java - Google Bigquery 加载具有本地文件大小限制的数据
- python - 从 xml 文件中检索数据到 mysql 数据库
- c++ - 如何静态链接 Qt 库?
- ios - 如何在 Swift 中为我的标签添加大纲?
- android - 使用 Android Native 代码作为 Android Titanium 模块
- sql - SQL查询选择结果依赖于两个值
- r - 使用 RDCOMClient 编辑 excel 属性
- python - python 正则表达式使用 findall 查找多个匹配项
- deep-learning - 对约洛感到困惑