2014-10-19 3 views
1

Моя строка, как показано ниже;Удаление строки с помощью регулярного выражения

... blablaa "}, "remove_list": [24, 20, 22, 25, 26, 23, 27, 19, 21], {" вар ": "значение", ... .

Я попытался удалить часть строки, как показано ниже, но изменить ничего

Regex.Replace(_QsString,@"""remove_list: [?+],", ""); 

Спасибо заранее

+0

Что такое ожидаемый выход? – hwnd

+0

Не могли бы вы показать результат, который хотите получить? – PaulH

+0

Похоже на строку JSON. Почему бы вам просто не разобрать его и не изменить? –

ответ

2

Кажется, что вы ищете замену всего между квадратными скобками, включая их и предыдущей запятой, ваше выражение не учитывает двойные кавычки после remove_list и [?+] считается символьным классом; сопоставляя либо знак вопроса, либо знак плюса, предпочтительно «одно» время.

Я считаю, что вы хотели следующее вместо ...

Regex.Replace(_QsString, @"""remove_list"": \[[^]]*],", ""); 

Примечание: Для того, чтобы соответствовать буквальное специальный символ, вы должны поставить перед ним обратную косую черту за пределами класса символов.

Code Demo

+0

Большое вам спасибо, это работает очень хорошо – Kerberos

1

Я думаю, что вы пытаетесь сделать с [?+] части в Регул ar выражение должно совпадать с тем, что происходит между [ и ], но синтаксис неверен.

Выражение [?+] будет соответствовать персонажу ? или персонажу +. [ и ] становятся наборами, которые соответствуют любому символу внутри него.

Вам необходимо спрятать скобки и использовать селектор . вместо ?. Кроме того, вы должны добавить еще ? после спецификатора, чтобы сделать его не жадный, в противном случае он будет проглотить все до в строке последнего ]:

Regex.Replace(_QsString,@"""remove_list"": \[.+?\],", "") 

(Кроме того, вы отсутствовали отметки закрытия котировки после remove_list.)

+0

спасибо, но ничего не изменилось. – Kerberos

+0

@Kerberos: Вы используете результат выражение? Строки неизменяемы в .NET, поэтому метод 'Replace' не может изменить исходную строку, результат возвращается как новая строка. – Guffa

+0

@Guffa. Фактическая строка, вероятно, содержит последовательности строк новой строки, в этом случае без использования dotall модификатор '(? s)' (заставляя точку совпадать с символами новой строки), точка ограничена той же строкой – hwnd

Смежные вопросы