Вы можете написать mon(day)?|tue(sday)?|wed(nesday)?
и т. Д.
?
- это «повторение ноль или единица»;так что это своего рода «опционально».
Если вам не нужны все захваты суффиксов, вы можете использовать (?:___)
группы без захвата, поэтому:
mon(?:day)?|tue(?:sday)?|wed(?:nesday)?
Вы можете группировать понедельник / пятницу / воскресенье вместе, если хотите:
(?:mon|fri|sun)(?:day)?
Хотя я не уверен, что это более читабельно.
Ссылки
Другой вариант
Java Matcher
позволяет вам проверить, есть ли частичное совпадение.Если Python делает то же самое, то вы можете использовать это и посмотреть, совпадают ли хотя бы (или, возможно, точно) 3 символа с monday|tuesday|....
(то есть со всеми полными именами).
Вот пример:
import java.util.regex.*;
public class PartialMatch {
public static void main(String[] args) {
String[] tests = {
"sunday", "sundae", "su", "mon", "mondayyyy", "frida"
};
Pattern p = Pattern.compile("(?:sun|mon|tues|wednes|thurs|fri|satur)day");
for (String test : tests) {
Matcher m = p.matcher(test);
System.out.printf("%s = %s%n", test,
m.matches() ? "Exact match!" :
m.hitEnd() ? "Partial match of " + test.length():
"No match!"
);
}
}
}
Это печатает ( как видно на ideone.com ):
sunday = Exact match!
sundae = No match!
su = Partial match of 2
mon = Partial match of 3
mondayyyy = No match!
frida = Partial match of 5
Смежные вопросы