RegEx, чтобы найти символы% в строке, которые не образуют начало допустимой двузначной escape-последовательности? - PullRequest
2 голосов
/ 05 мая 2011

Я хотел бы, чтобы регулярное выражение нашло % s в исходной строке, которые не образуют начало действительного двух-шестнадцатеричного экранированного символа (определяется как % за которыми следуют ровно две шестнадцатеричные цифры (верхний или нижний регистр), которые можно использовать для замены только этих символов % на %25.

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

Вот пример входной строки.

He% 20has% 20a% 2050 %% 20chance% 20of% 20living% 2C% 20but% 20there% 27s% 20only% 20a% 2025 %% 20chance% 20of% 20that.

Это не соответствует какому-либо стандарту кодирования, поскольку представляет собой сочетание допустимых экранированных символов, например. %20 и два свободных процента. Я хотел бы преобразовать эти % s в %25 s.

Мой прогресс до сих пор заключается в том, чтобы определить регулярное выражение %[0-9a-z]{2}, которое находит символы%, которые являются допустимыми, но я не могу понять, как изменить его, чтобы найти те, которые aren ' т законно.

Ответы [ 2 ]

4 голосов
/ 05 мая 2011
%(?![0-9a-fA-F]{2})

Должен сделать свое дело.Используйте предварительный просмотр, чтобы найти % NOT, за которым следует правильное двузначное шестнадцатеричное значение, а затем замените найденный символ % на замену %25.

(Надеюсь, это работает(предположительно) NSRegularExpression или что вы используете)

3 голосов
/ 05 мая 2011

%(?![a-fA-F0-9]{2})

Это процент, за которым следует отрицательный прогноз для двух шестнадцатеричных цифр.

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