2017-02-20 2 views
0

У меня есть файл конфигурации, в котором пользователи могут предоставлять регулярные выражения в соответствии с словами, например.Как отразить, использовалась ли сырая или нормальная строка?

wordlist = ["is", r"\b(and)\b"] 

Проблема: если пользователь предоставляет "is", это будет также сопоставляют "This" - который не то, что я хочу. Второе регулярное выражение лучше, так как оно использует границы слова. К сожалению, это раздражает делать для каждого слова.

Моя идея следующая: пусть пользователь укажет необработанные строки (которые взяты нетронутыми для соответствия регулярному выражению) и «обычные строки» (которые в первую очередь переведены на r"\b({})\b".format(word) для удобства). Есть ли способ реализовать это? Можно ли использовать отражение, чтобы указать, была ли строка первоначально предоставлена ​​как строка-строка?

ответ

1

Может отражению использоваться, чтобы сказать, если строка была первоначально предоставляются в качестве сырья струны

К сожалению, нет, потому что во время выполнения сырьевой строка уже была оценена, управляющими символами сбежавших и просто обыкновенная стручка; в Python нет «raw string type», это просто синтаксический уровень, где вы можете сделать различие.

>>> type(r'\n') 
str 
+0

Я надеялся, что Python предоставит любую полезную информацию из уровня синтаксиса через отражение. По моему мнению, он делает это уже, так как существует '__name__' и т. Д. Моя следующая попытка состояла бы в том, чтобы проверить escape-последовательности и вывести, если было предусмотрено регулярное выражение или« простое слово », но это кажется ненадежным. – duesee

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