java - 正则表达式匹配某个单词的每次出现但被某些字符打断
问题描述
我不是程序员,但我正在尝试编写一些 RegEx。我只学到了一些基础知识,其他的不多。我的意图如下:我有一些格式化的文本,其中有一些单词出现uses)
。我想把所有东西都放在后面uses)
(和“使用”),但是如果匹配:
或其他出现的uses)
,以及第一个空格(以便匹配以非空格字符开始),则匹配必须停止.
示例文本:
Second Wind (Recharge 5-6) (1/1 uses). The Veteran can use a bonus action to regain hit points equal to 14 (1d10 + 9).
Spellcasting.
3/day each: Jump (3/3 uses), Darkness (3/3 uses), Burning Hands (3/3 uses)
Spellcasting.
1st level (4 slots): Ray Of Sickness, Witch Bolt, Tasha's Hideous Laughter (4/4 uses)
RegEx 应该分别给我:
Second Wind (Recharge 5-6) (1/1 uses)
Jump (3/3 uses)
Darkness (3/3 uses)
Burning Hands (3/3 uses)
Ray Of Sickness, Witch Bolt, Tasha's Hideous Laughter (4/4 uses)
直到现在我想出了这个代码。
[^:,\s](.*?uses\))
这几乎可以正确匹配所有内容,但不幸的是,匹配并没有停止:
,因此甚至匹配了我不想匹配的其他文本,得到了这个而不是我在这里写的:
Second Wind (Recharge 5-6) (1/1 uses)
3/day each: Jump (3/3 uses)
Darkness (3/3 uses)
Burning Hands (3/3 uses)
1st level (4 slots): Ray Of Sickness, Witch Bolt, Tasha's Hideous Laughter (4/4 uses)
我怎样才能摆脱那些我不需要的额外文本?这是带有代码的示例https://regexr.com/4sbtf
解决方案
您当前遇到的问题[^:,\s](.*?uses\))
是该序列.*?
匹配任何字符序列,最终包括:
. 您想要做的是将通配符替换为.
“除 : 之外的任何字符”,即[^:]
.
[^:,\s]([^:]*?uses\))
从而达到你想要的。
推荐阅读
- javascript - 如何使用 jQuery 隐藏子页面?
- python - Kivy 标签仅显示文本循环的最后一个元素
- javascript - 使用打字稿反应热重载
- java - 我的 findViewByid 在扩展片段上变红,我在 onCreate 方法上做而不是在 onCreateView 方法中
- ip - 可以解除阿里ECS实例的公网IP绑定吗?
- getgauge - getaguge vscode 插件与 java 仪表项目
- java - 使用斯坦福解析器检测句子中的语法错误
- java - 在从 LinkedHashMap 中删除对象之前关闭对象是否安全?
- python - 条件语句在不同语言中的行为不同
- node.js - 大家好..我对这一切都很陌生..我在安装 npm 时遇到问题