Использование регулярного выражения для исключения подпапки в c ++ - PullRequest
1 голос
/ 17 октября 2019

Я бы хотел использовать регулярное выражение для сопоставления этого пути к файлу в macOS:

/Users/username/Library/Containers/com.tencent.xinWeChat/...

В этом пути много подпапок, но я хочу исключить этот конкретный путь.

/Users/username/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/8be628ba3eab5f8c52f6f1b22f897153/Message/MessageTemp/8be628ba3eab5f8c52f6f1b22f897153/OpenData/...

Я хочу исключить путь, содержащий «OpenData» в регулярном выражении, поэтому я использую этот:

R"^/Users/[^/]+/Library/Containers/com\.tencent\.\w+/.+/(?!OpenData)/.+"

Но это не работает. Отрицательный взгляд немного сложен для меня. Кто-нибудь может показать мне правильное регулярное выражение? Спасибо!

1 Ответ

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

Вы можете использовать

^/Users/[^/]+/Library/Containers/com\.tencent\.\w+/(?!(?:.*/)?OpenData(?:/|$)).+

См. Демоверсию regex

Подробности

  • ^- начало строки
  • /Users/ - литеральная подстрока
  • [^/]+ - 1+ символов, отличных от /
  • /Library/Containers/com\.tencent\. - строка /Library/Containers/com.tencent.
  • \w+ - 1+ слов символов
  • / - / char
  • (?!(?:.*/)?OpenData(?:/|$)) - отрицательный прогноз, который не дает совпадения, если естьOpenData подраздел в URL
  • .+ - любые 1+ символов, кроме символов разрыва строки, как можно больше.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...