Есть ли способ сделать полностью обратное сопоставление регулярного выражения, что я использую.Отрицательное соответствие шаблону RegEx в эквиваленте Python для Perl (! ~ Operator)
(?!...)
работает только для простого рисунка. Я имею в виду, что у меня есть RegEx, чтобы соответствовать нескольким форматам, но я хотел заменить все в строке, кроме моих мультиформатных форматов.
Скажем например: Я написал комплексный шаблон RegEx, чтобы найти дни недели, часы, месяцы, годы. Вместо того, чтобы находить эти совпадения и разбивать мою строку с помощью этого шаблона и присоединять все, что соответствует; если есть обратное совпадение, я мог бы просто заменить его одним выстрелом.
Решение, данное в How to "inverse match" with regex?, не поддерживает все.
Пример
hr = """
Monday: 11:30am - 9:30pm Tuesday: 11:30am - 9:30pm
Wednesday: 11:30am - 10:00pm Thursday: 11:30am - 10:00pm
Friday: 11:30am - 10:30pm Saturday: 11:00am - 10:30pm
(brunch served until 3pm) Sunday: 10:30am - 9:30pm (brunch served until 3pm)
Happy Hour and Special Appetizer menu starting at $3 in the bar. Hours from 4 - 7pm Daily.
$4 BURGER special available on Monday. Wednesday: 1/2 off all bottled wines (4-close)"""
import re
newStr = []
dayPattern = """
(?:mon|tue|wed|thu|fri|sat|sun|thurs)(?:day)?(?:[.:])*
\s*
(?:\d{1,2}(?:[:]\d{1,2})?)\s*(?:[ap][.]?m.?) # Start hour
\s*[-|to]+\s*
(?:\d{1,2}(?:[:]\d{1,2})?)\s*(?:[ap][.]?m.?) # Close hour
"""
newStr.extend(\
re.findall(re.compile(dayPattern, re.VERBOSE|re.IGNORECASE), hr))
print " ".join(newStr)
ВЫВОД
Monday: 11:30am - 9:30pm Thursday: 11:30am - 10:00pm Friday: 11:30am - 10:30pm Sunday: 10:30am - 9:30pm
Но я здесь не хватает "Monday: 11:30am - 9:30pm Tuesday: 11:30am - 9:30pm Wednesday: 11:30am - 10:00pm Thursday: 11:30am - 10:00pm Friday: 11:30am - 10:30pm"
.
Я мог бы изменить мое регулярное выражение, чтобы включить эту модель слишком
Но вместо того, чтобы делать, как это, есть ли способ я могу удалить любое слово, кроме понедельника/вторник/.... & пн/вт/ср. .. & 11:00 am/12pm ...
т.е. именно я хочу это выход: Monday: 11:30am - 9:30pm Tuesday: 11:30am - 9:30pm Wednesday: 11:30am - 10:00pm Thursday: 11:30am - 10:00pm Friday: 11:30am - 10:30pm Saturday: 11:00am - 10:30pm Sunday: 10:30am - 9:30pm
может быть, если вы могли бы поместить свой код, который мы можем помочь –
Не могли бы вы включить код, который вы имеете до сих пор , и пример ввода/вывода? Трудно понять, что вы пытаетесь сделать. – amon
Случайно, вы имеете в виду оператора! ~? –