首页 > 解决方案 > 如果之间没有数字,则获取发生

问题描述

我有这样的字符串:

回合开始时HP低于30%时脑系角色攻击提升2.75倍,连锁提升1.5倍,否则脑系角色攻击提升2.5倍

我需要的是这样的:

Boosts (their )?ATK.+by 2.75x

使用这个正则表达式,我会将一个角色标记为 2.75 倍 ATK 助推器。问题出在我使用这个正则表达式(找到 1.5 ATK 助推器)时:

Boosts (their )?ATK.+by 1.5x

这也符合我的字符串,但不应该。我尝试使用负回溯和负前瞻,但没有有用的结果。

那么,如果 ATK 和我想要的数字之间有一个数字,我怎么能拒绝匹配呢?

标签: regex

解决方案


使用\D*模式而不是仅匹配和.+之间的非数字字符:ATK1.5

Boosts (their )?ATK\D*by 1\.5x

查看正则表达式演示

请注意,.如果它表示文字句点,则必须对其进行转义。


推荐阅读