Учитывая следующие тестовые строки:
A simple paper
A simple, burnt paper
Я хочу сопоставить ключ «простой» (который также может быть другими ключами), но НЕ включать определенную дополнительную информацию.Например, простая бумага такая же, как простая зеленая бумага;оба считаются простыми документами и должны иметь соответствующий ключ.
У меня есть следующее регулярное выражение:
A (?P<key>.+)(?:, green|) paper
Проблема в том, что я не могу разделить«зеленая» часть, которую нужно игнорировать.
Дополнительные входные данные, чтобы уточнить, какие пробелы необходимы для группы ключей:
A fairly complex paper
A fairly complex, green paper
Оба они должны совпадать, где key
* Только 1017 *.
Дополнительные входные данные для уточнения группы исключений:
A simple, torn paper
A simple, torn, green paper
Оба они должны совпадать, где key
равно simple, torn
, поскольку , green
указано как необязательное.с целью фильтрации по явному исключению.
Что я пытаюсь сказать с помощью (?:, green|)
, так это то, что , green
МОЖЕТ появиться в этой точке, и, если это так, захватить его за пределами группы key
чтобы он там не появлялся.
Возможные символы для ключа:
[a-zA-Z,_\- ]
- Обратите внимание на включение пробела [ ]
и запятой [,]
.