Я знаю, что это можно сделать разными способами, но мне интересно, каково будет регулярное выражение для выбора всех строк, не содержащих конкретной подстроки, скажем, GDA из таких строк, как GADSA, GDSARTCC,, THGDAERY.
Вы можете сделать отрицательный взгляд
"^((?!GAD).)*$"
Вам не нужно регулярное выражение. Просто используйте string.contains("GDA"), чтобы увидеть, содержит ли строка определенную подстроку. Он вернет false, если нет.
string.contains("GDA")
false
Если вы вводите одну длинную строку, вам нужно решить, как вы определяете подстроку.Если он разделен пробелами, то:
String[] split = mylongstr.split(" "); for (String s : split) { if (!s.contains("GDA")) { // do whatever } }
Дайте этому шанс:
java.util.regex.Pattern p = java.util.regex.Pattern.compile("(?!\\w*GDA\\w*)\\b\\w+\\b"); java.util.regex.Matcher m = p.matcher("GADSA, GDSARTCC, , THGDAERY"); while (m.find()) { System.out.println("Found: " + m.group()); }
String regex = ".*GDA.*"; List<String> testStrings = populateStrings(); for (String s : testStrings) { if (!s.matches(regex)) System.out.println("String " + s + " does not match " + regex); }