我不是一个程序员,但我正试图锁定一些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的示例
发布于 2020-01-16 14:58:02
[^:,\s](.*?uses\))目前存在的问题是,序列.*?匹配任何字符序列,最终包括:。您想要做的是将通配符.替换为“任意字符但:",即[^:]。
因此,[^:,\s]([^:]*?uses\))实现了您想要的结果。
https://stackoverflow.com/questions/59772107
复制相似问题