Java 正则表达式匹配某个单词的每次出现,但被某些字符打断
我不是一个程序员,但我正在努力掌握一些正则表达式。我只学了一些基础知识,其他的不多。 我的意图如下:我有一些格式化文本,其中出现了一些单词Java 正则表达式匹配某个单词的每次出现,但被某些字符打断,java,Java,我不是一个程序员,但我正在努力掌握一些正则表达式。我只学了一些基础知识,其他的不多。 我的意图如下:我有一些格式化文本,其中出现了一些单词uses)。我想获得uses)(和“uses)”)后面的所有内容,但如果匹配到:或其他出现的uses),以及第一个空格(以便匹配以非空格字符开始),则必须停止 示例文本: Second Wind (Recharge 5-6) (1/1 uses). The Veteran can use a bonus action to regain hit points
uses)
。我想获得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)
我怎样才能摆脱我不需要的额外文本?下面是代码的示例您当前在
[^:,\s](.*?uses\)
中遇到的问题是序列*?
匹配任何字符序列,最终包括:
。
您要做的是将通配符
替换为“除:”以外的任何字符,即[^::]
[^:,\s]([^::*?uses\)
从而实现你想要的。只匹配[^:,\s][^:*?uses\)
或捕获([^:,\s][^:*?uses\)
。哦,老兄,非常感谢!我尝试了类似的方法,但我认为我没有删除
,而且它不起作用