2014-09-14 3 views
1

Я работаю над частью проекта, который, если возможно, повторяет URL-адрес http-url с https-адресом.конвертировать js regex в python regex

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

, как, например, у меня есть, что регулярное выражение Дано:

https://$1wikimediafoundation.org/ 

и я бы регулярное выражение так:

https://\1wikimediafoundation.org/ 

моя проблема заключается в том, что я не знаю, как это сделать (преобразование $ в \)


Этот код Безразлично «Т работы:

'https://$1wikimediafoundation.org/'.replace('$', '\') 

генерировать следующее сообщение об ошибке:

SyntaxError: EOL while scanning string literal 

Этот код работы без ошибок:

'https://$1wikimediafoundation.org/'.replace('$', '\\') 

но генерировать неправильный вывод:

'https://\\1wikimediafoundation.org/' 
+1

Ваша замена правильная, вас, вероятно, смущает то, как вы показываете результат. Распечатайте его с помощью 'print', и вы увидите только обратную косую черту. – alexis

ответ

1

На самом деле это работает:

>>> 'https://$1wikimediafoundation.org/'.replace('$', '\\') 
'https://\\1wikimediafoundation.org/' 
>>> print 'https://$1wikimediafoundation.org/'.replace('$', '\\') 
https://\1wikimediafoundation.org/ 

когда вы делаете 'https://$1wikimediafoundation.org/'.replace('$', '\\'), это возвращение __repr__ (~ представление) строки, и вы можете увидеть специальные символы.

Распечатав это, вы используете __str__, читаемую версию. (См this answer на __str__ против __repr__)

+0

Моя проблема в том, что я бы изменил представление строки, а не читаемую версию, потому что я бы проанализировал эту строку как регулярное выражение на следующем шаге. – pointhi

1

попробовать это:

'https://$1wikimediafoundation.org/'.replace('$', r'\') 

добавление r"\" whill автоматически избежать backslash, который вы пытаетесь сделать.