Совпадение всего до числа в списке чисел через запятую - PullRequest
1 голос
/ 01 февраля 2012

У меня есть список чисел, разделенных запятыми. Мне нужно сопоставить все до, но не включая число, которое я передаю без запятой.

Это пример строки, которую я буду искать:

1,2,3,5,11,12,13

Так что, если я ищу "3", я должен получить "1,2". Если я ищу "12", я должен получить "1,2,3,5,11"

Каждое число появится в строке только один раз.

Я придумал это, которое работает для всего, кроме «1», где оно терпит неудачу по причине, которую я не полностью понимаю. Если я ищу «1», совпадений не должно быть. Я искал решения, но у многих вопросов «совпадения до X» есть уникальная часть строки, которая облегчает жизнь. С номерами один номер может быть частью другого номера, например, «3» и «13».

 (.*?)(?=,?[^0-9]5)

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

Кстати - регулярное выражение со вкусом C #

1 Ответ

2 голосов
/ 01 февраля 2012

Я думаю, что что-то вроде этого должно работать, если вы хотите, чтобы все до первого появления числа и именно это число, а не какое-то другое число, которое имеет его в качестве префикса:

^(.*?)(?=(,|^)your-number(,|$))

Для определенного числа это будет выглядеть так:

^(.*?)(?=(,|^)12(,|$))

Для ввода из вашего примера и числа 1 оно соответствует пустой строке в соответствии с запросом.

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