У меня длинная последовательность сегментов, разделенных разделителем say '-'. Он имеет форму:Проверка строки для подстановки подстрок
I-am-logged-into-StackOverFlow-I-am-using-StackOverFlow-
I-am-reading-a-book-A-I-have-written-a-book-B-
Пользователь указывает сегменты, которые мне нужно сравнить.
Скажем, для строки - 1, выше: он вводит 5 и 9. Оба содержат StackOverflow, поэтому я возвращаюсь истинную.
Для струн - 2, сегментов 6, 12. Но. они разные книги A, B. Итак, я возвращаю false.
Я попытался сделать это, используя std :: regex.
Для всех индексов не введенных пользователем, заливаю в тех частях временной последовательности с
([^ -] +) -, т.е. строка из одного или нескольких символов, не содержащих - , но заканчивая этим.
Для двух индексов пользовательские входы, я сталкиваюсь с проблемой. Если я пойду с группами захвата и укажите ([^ -] + -) в первом индексе и используйте \ 1 (или любую n-ю группу захвата) для второго индекса, результаты несовместимы. Книга соответствует Номерной фонд, который не является ожидаемым. В некоторых случаях a- соответствует с not-.
Затем я сопоставляю предложения, приведенные выше, с этой временной строкой.
Как проверить равенство - символы от начала до конца и длину подстрок по заданным индексам?
Кроме того, я нахожу этот вопрос похожим, но некоторые из результатов там несовместимы. Constructing a regular expression
PS: Учитывая тот факт, что легко выполнять регулярное выражение, а не извлекать сегменты по заданным индексам строки и сравнивать их, я бы предпочел первый. Количество строк может превышать сотни.
Улучшенные решения оценены.
Я сожалею. Это то, что я имею в виду, извлекая сегменты. То есть ** найдите ** необходимые «-» позиции и извлеките подстроку. Тогда сравните то же самое. –
@KutKV взгляните на пример, который я опубликовал, это то, что вы хотите? Правильно ли я понял? –
Хорошо, я буду помнить об этом. Я планирую построить временную строку, как сказано выше, использовать это как регулярное выражение, а затем выполнить regex_match в списке строк, которые у меня есть. –