Недавно у вас был тот же вопрос и успешно использовался https://npmjs.org/package/tea-properties , который также set
вложенных объектов / массивов:
get :
var o = {
prop: {
arr: [
{foo: 'bar'}
]
}
};
var properties = require('tea-properties');
var value = properties.get(o, 'prop.arr[0].foo');
assert(value, 'bar'); // true
set:
var o = {};
var properties = require('tea-properties');
properties.set(o, 'prop.arr[0].foo', 'bar');
assert(o.prop.arr[0].foo, 'bar'); // true
Используйте функцию re.escape()
для этого:
escape (string)
Возвращаемая строка со всеми неалфавитными спицами; это полезно, если вы хотите сопоставить произвольную литеральную строку, которая может иметь в ней метасимволы регулярного выражения.
blockquote>Простейший пример, поиск любого присутствия предоставленной строки, необязательно сопровождаемого 's', и вернуть объект соответствия.
def simplistic_plural(word, text): word_or_plural = re.escape(word) + 's?' return re.match(word_or_plural, text)
Вы можете использовать re.escape () :
re.escape (string) Возвращаемая строка со всеми неалфавитами обратной косой черты; это полезно, если вы хотите сопоставить произвольную литеральную строку, которая может содержать метасимволы регулярного выражения.
blockquote>>>> import re >>> re.escape('^a.*$') '\\^a\\.\\*\\$'
Попробуйте:
\ Q и \ E в качестве якорей
Поместите условие Or в соответствие с полным словом или регулярным выражением.
Ref Ссылка: Как совместить целое слово, которое включает специальные символы в регулярном выражении
К сожалению, re.escape()
не подходит для заменяющей строки:
>>> re.sub('a', re.escape('_'), 'aa')
'\\_\\_'
Решение состоит в том, чтобы поместить замену в лямбда:
>>> re.sub('a', lambda _: '_', 'aa')
'__'
, потому что возвращаемое значение лямбда обрабатывается re.sub()
как литеральная строка.
repl
для re.sub
является строкой, а не регулярным выражением; применение re.escape
к нему не имеет никакого смысла в первую очередь.
– tripleee
29 January 2018 в 07:54
repl
не является простой строкой, он анализируется. Например, re.sub(r'(.)', r'\1', 'X')
вернет X
, а не \1
.
– Flimm
20 April 2018 в 13:45
repl
: stackoverflow.com/q/49943270/247696
– Flimm
20 April 2018 в 13:54