Соотнести строку с маской
От: dwebster Россия  
Дата: 05.04.18 20:40
Оценка:
Привет,

Допустим имеется строка, имя домена — "facebook.com"
И имеется другая строка, которая может содержать маску, например "*fa*b*k.com/so*page*"

Нужно определить, входит ли первая строка в правило, заданное второй строкой (в данном примере — входит).
Как это лучше сделать? Не хочется изобретать велосипед, наверняка задача просто решается при помощи boost или std.
Re: Соотнести строку с маской
От: Caracrist https://1pwd.org/
Дата: 05.04.18 21:02
Оценка:
Здравствуйте, dwebster, Вы писали:

D>Как это лучше сделать? Не хочется изобретать велосипед, наверняка задача просто решается при помощи boost или std.


http://www.cplusplus.com/reference/regex/
~~~~~
~lol~~
~~~ Single Password Solution
Re: Соотнести строку с маской
От: watchmaker  
Дата: 05.04.18 21:04
Оценка: 1 (1)
Здравствуйте, dwebster, Вы писали:

D>Допустим имеется строка, имя домена — "facebook.com"

D>И имеется другая строка, которая может содержать маску, например "*fa*b*k.com/so*page*"
D>Нужно определить, входит ли первая строка в правило, заданное второй строкой (в данном примере — входит).

Звёздочка означает, что под ней может скрываться ноль, один, или произвольное число символов? Если так, то кажется, что ты где-то напутал в формулировке.

Ведь тогда под звёздочной может скрываться всё что угодно, в том числе и искомая строка целиком! И для ответа в этом случае не нужно даже смотреть на неё

bool contains(const std::string& needle /* = "facebook.com" */, const std::string& haystack /* = "*fa*b*k.com/so*page*" */) {
  return haystack.find('*') != std::string::npos
      || haystack.find(needle) != std::string::npos;
}
Отредактировано 05.04.2018 21:04 watchmaker . Предыдущая версия .
Re: Соотнести строку с маской
От: Pzz Россия https://github.com/alexpevzner
Дата: 06.04.18 11:14
Оценка:
Здравствуйте, dwebster, Вы писали:

D>Допустим имеется строка, имя домена — "facebook.com"

D>И имеется другая строка, которая может содержать маску, например "*fa*b*k.com/so*page*"

https://github.com/MichaelCook/glob_match
Re: Соотнести строку с маской
От: chaotic-kotik  
Дата: 11.04.18 06:42
Оценка:
Здравствуйте, dwebster, Вы писали:

D>Привет,


D>Допустим имеется строка, имя домена — "facebook.com"

D>И имеется другая строка, которая может содержать маску, например "*fa*b*k.com/so*page*"

Я бы перегнал glob-expression в регулярное выражение и матчил бы строки этим регулярным выражением.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.