Вопрос по regex, c# – Regex.Split на плюс и минус

2

У меня есть строка1.5(+1.2/-0.5), Я хочу использоватьRegex чтобы извлечь числовое значение:{1.5, 1.2, 0.5}.

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

<code>string[] foo = Regex.Split("1.5(+1.5/-0.5)", @"(?=[(/)])");
// OK

string[] foo = Regex.Split("1.5(+1.5/-0.5)", @"(?=[(/+-)])"); 
// Exception catched
</code>

И пойманное исключение:

System.ArgumentException: parsing "(?=[(/+-)])" - [x-y] range in reverse order

Ваш Ответ

2   ответа
1

Пытались избежать знаков, как +?

И почему бы не RegEx, как/\d+\.?\d+/ ? Это не разделит его, но вернет числа.

как я уже сказал - это не для разделения, а для матча.
ваш код падает KMC
Моя вина - пропустил
ошибаешься ... возвращает всю строку без разбиения .. KMC
7

Тире - это специальный символ в квадратных скобках в регулярном выражении. Это означает диапазон:[a-z] означает любой символ изa вz, Когда ты написал[(/+-)]это на самом деле будет означать(или любой персонаж из+ в), Ошибка происходит из-за того, что в ASCII-порядке) приходит раньше+так что диапазон символов[+-)] является недействительным.

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

И я согласен, я бы, вероятно, использовал глобальное регулярное выражение, чтобы выбрать[0-9.]+и не расколоть на все остальное.

о, я забыл убежать +1 KMC
это показывает (+, / - и). Я думаю, что наоборот, что мне нужно. Но мне трудно понять регулярные выражения. В настоящее время я использую @ & quot; (? = [(\ / \ + \ -)]) & quot; которая разбивает строку на 6 частей, которая все еще работает. Но было бы идеально, чтобы извлечь только цифры KMC
Под «глобальным регулярным выражением» я имел в виду использованиеRegex.Matches вместоRegex.Split.
Что вы имеете в виду, опускает числовое значение?
Я использовал [0-9.] +, Но он опускает числовое значение .. KMC

Похожие вопросы