reg-выражение: граница слова с \ t \ n \ r - PullRequest
1 голос
/ 04 ноября 2019

Best

Я ищу выражение регулярного выражения, которое будет отображаться, если слово не является подсловом.
логически это может быть возможно через границы слова: \bHelloWorld\b

но они не работают, если в тексте есть \t или \n. Например:

HelloWorld is a beautiful word\nHelloWorld\t\t\tHelloWorld HelloWorld \t HelloWorld nopHelloWorld  HelloWorldnop \tnopHelloWorld ...

Таким образом, в приведенном выше примере я хотел бы найти 5 дополнительных сведений HelloWorld

: \ n \ t \ r соответственно: новая строка, табуляция и кареткавозврат (таким образом, нет 2 отдельных символов)

1 Ответ

2 голосов
/ 05 ноября 2019

Python собирается интерполировать экранированные управляющие символы, если это не необработанная строка.
Таким образом, это результат анализа, когда не необработанная строка (эта строка заключена в одинарные кавычки):

>>> print ('HelloWorld is a beautiful word\nHelloWorld\t\t\tHelloWorld HelloWorld \t HelloWorld nopHelloWorld  HelloWorldnop \tnopHelloWorld ...')
HelloWorld is a beautiful word
HelloWorld                      HelloWorld HelloWorld    HelloWorld nopHelloWorld  HelloWorldnop    nopHelloWorld ...

Что соответствует 5 hello world, как и ожидалось https://regex101.com/r/8TwxCO/1

Но, если исходная строка представляет собой строку raw , то она будет соответствовать только 3 https://regex101.com/r/nUdSZQ/1

>>> print (r'HelloWorld is a beautiful word\nHelloWorld\t\t\tHelloWorld HelloWorld \t HelloWorld nopHelloWorld  HelloWorldnop \tnopHelloWorld ...')
HelloWorld is a beautiful word\nHelloWorld\t\t\tHelloWorld HelloWorld \t HelloWorld nopHelloWorld  HelloWorldnop \tnopHelloWorld ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...