Regex альтернатива отрицательному взгляду - PullRequest
2 голосов
/ 15 октября 2019

Я хочу сопоставить все пути, которые включают ключевое слово build, если они также не содержат .html

Вот рабочее регулярное выражение, использующее отрицательный прогноз: https://regexr.com/4msck

Яиспользование регулярного выражения для сопоставления путей в unison , который не поддерживает отрицательный прогноз. Как я могу воспроизвести функциональность вышеупомянутого регулярного выражения без негативного взгляда?

Ответы [ 2 ]

1 голос
/ 15 октября 2019

Возможно, но полученное регулярное выражение довольно плохо с точки зрения читабельности и удобства обслуживания.

http://regexr.com/4mst1

^(?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*build(?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*$

Объяснение:

  • ^ - начало строки / строки
  • (?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))* - соответствует всему, что не содержит .html
  • build - буквально эта строка
  • (?:[^\.\n]|\.(?:$|[^h\n]|h(?:$|[^t\n]|t(?:$|[^m\n]|m(?:$|[^l\n])))))*- как и раньше
  • $ - конец строки / строки
0 голосов
/ 15 октября 2019

Согласно инструкции, это должно работать. Он основан на комментарии: «Я хочу игнорировать все файлы в каталоге сборки, кроме файлов html»

ignore = Regex .*build.*
ignorenot = Name {*.html}

Я не знаком с unison, поэтому я должен предположить, что вы можете указатьпути с более чем одним правилом.

У меня есть такое ожидание из-за этого утверждения в руководстве:

Существует также предпочтение ignorenot , которое указываетнабор шаблонов для путей, которые не следует игнорировать, даже если они соответствуют шаблону ignore .

...