Есть ли способ применить флаг FNM_PATHNAME для fnmatch только для первого слэша? - PullRequest
0 голосов
/ 13 октября 2019

Привет. Я пытаюсь найти средство для выполнения маскирования с использованием fnmatch с определенными правилами.

при нахождении первого экземпляра косой черты '/' в строке он должен точно совпадать с косой чертой ('/') в шаблоне. то есть подстановочный знак ('*') не сможет совпадать. Однако последующие косые черты во входной строке могут быть сопоставлены с использованием подстановочного знака.

Например, для желаемого результата:

строка a / b / c должна соответствовать, используя / . то есть второй '/' после 'b' совпадает, но не первый слеш после 'a'.

строка: a / b / c шаблон: / Результат: Соответствие. Потому что есть явный шаблон '/' для первого экземпляра '/' в строке str

string: a / b / c pattern: * Результат: Не совпадает. потому что нет явного '/' для первого экземпляра '/' в стрмне нужно сопоставить каждый '/' в строке с '/' в шаблоне. Но нет, если мне нужно ограничить это только первой инстанцией.

-> Могу ли я продолжать работать над этим с помощью fnmatch или мне нужно зависеть от любой другой функциональности posix. Пожалуйста помоги.

1 Ответ

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

Нет, нет способа сделать это напрямую с помощью fnmatch, но вы можете просто разбить шаблон на две вначале /, а затем разделить все строки-кандидаты аналогично в их первой /, исопоставьте первую и вторую части отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...