Как соответствовать следующей последовательности:
You wound DUMMY TARGET for 100 points of damage
но не:
You wound DUMMY TARGET with SKILL for 100 points of damage
с регулярным выражением:
^You wound ([\\w\\s]+)(?!with) for (\\d+) points of damage
Регулярное выражение выше соответствует обеим строкам, а я ожидаю совпадения только с первой. Есть ли способ заставить эту работу?
Пример кода Java:
import java.util.regex.*;
public class Dummy {
static Pattern pattern = Pattern.compile("^You wound ([\\w\\s]+)(?!with) for (\\d+) points of damage");
static Matcher matcher = pattern.matcher("");
static String FIRST_SEQUENCE = "You wound DUMMY TARGET for 100 points of damage";
static String SECOND_SEQUENCE = "You wound DUMMY TARGET with SKILL for 100 points of damage";
public static void main(String...args) {
if (matcher.reset(FIRST_SEQUENCE).matches())
System.out.println("First match. Ok!");
if (matcher.reset(SECOND_SEQUENCE).matches())
System.out.println("Second match. Wrong!");
}
}