У меня возникают проблемы с решением регулярных выражений, где я считаю, что мое решение верное, но совпадение не так, как я ожидал.Regex: Группа захвата, соответствующая символу, который должен быть исключен
Может кто-то, пожалуйста, помогите мне понять, где мои мысли идут не так?
Вот проблема, которую я имею в решении, мое регулярное выражение, и что происходит не так:
проблему решить
Я дал ряд строк, представляющих собой папки, например:
"TopLevelFolder"
"TopLevelFolder\Parent"
"TopLevelFolder\Parent\Child"
Я стремлюсь, чтобы преобразовать их в следующие строки для отображения в списке выбора:
"TopLevelFolder"
"...\Parent"
"...\...\Child"
Мои Regex
Двигатель: Dot Net
Язык: C#
(([^\\]+\\)+)
regex101 пример:
https://regex101.com/r/zY1oM5/1
Это регулярное выражение пытается: один или больше раз, найти один или несколько символов, которые не являются обратным слэшем, а затем обратная косая черта и помещают это совпадение в группу захвата.
Например, в «TopLevel \ Parent \ Child» поместите каждый из «TopLevel» и «Parent» в группу захвата.
Что происходит неправильно
Возвращенных группы захвата для этого регулярного выражения в данном примере включает в себя:
"TopLevel\Parent\"
"Parent\"
Я считаю, что первая группа не должна быть захваченной, потому что я попросил, чтобы символы перед окончательная обратная косая черта не включает обратную косую черту.
Очевидно, что мои ожидания и понимание ошибочны. Что я должен делать здесь, и как мое понимание ошибочно?
Вы также можете указать язык программирования, который будет использоваться, на всякий случай – Amir