artur567297
Там пробел перед 7BAS. - так я могу поставить Y = \s7 все равно вернет 7BAS
Да ты не понимаешь регулярные выражения. Где ты их изучал?
Вот мы берём пример мой выше
>>> import re
>>>
>>> re.findall(r'(?<!7)\w+', 'HISD 7BAS')
['HISD', '7BAS']
>>>
При поиске вот такой фигни
(?<!7)\w+
в вот такой строке
HISD 7BAS
что с чем совпадает в итоге на каждом шаге в функции?
Вот на первом поиске в функции они совпадают вот так:
(?<!7) \w+
пустая_строка HISD пробел 7BAS
На втором поиске в функции они совпадают вот так:
(?<!7) \w+
HISD пробел 7BAS
А ты думал что? что оно с H совпадает сначала, потому что H - это не семёрка? Вот ты заблуждаешься, оно не совпадает с H. Оно совпадает с пустотой, которая перед H стоит и показывает истину для этой пустоты, потому что эта пустота не равна символу семёрке (в пустоте нет символа), поэтому HISD и совпадает как подходящее.
Для тупорылых
там написано это всё
(?<!…)
Matches if the current position in the string is not preceded by a match for …. This is called a negative lookbehind assertion. Similar to positive lookbehind assertions, the contained pattern must only match strings of some fixed length. Patterns which start with negative lookbehind assertions may match at the beginning of the string being searched.
Но ты по-английски читать не умеешь, поэтому для тебя мы сделаем исключение. Не будем тебя тупорылым называть, а просто покажем тебе, где это написано и что оно значит.
artur567297
а если наоборот нужно отобрать все слова которые начинаются не с семерки в справки сказано что символ ?<! для этого подходит а по факту нет
Да ты не шаришь просто в регулярных выражениях! С чего ты взял, что речь идёт про слова,
начинающиеся с семёрки?! Речь идёт про слова,
перед которыми семёрка стоит! Перед словом 7BAS никакой семёрки нет, там пробел стоит, и вот с ним, с этим пробелом, эта проверка и совпадает и показывает истину, потому что пробел - это не семёрка.
Если ты думаешь, что ты понял регулярные выражения, то ты глубоко заблуждаешься. Ты их не понял и неверно трактуешь сами эти выражения. Ты не понимаешь, как работают эти проверки, потому что их работа описана на английском, а ты по-английски читать не умеешь. И вот прежде чем заниматься программированием, иди и английский подтяни хотя бы до какого-то уровня. Иначе ты так и будешь всякую чушь молоть. Ну и прослывёшь просто дебилом каким-то и всё. А форумы потом закончатся и на всех этих форумах будут знать, что ты дебил. В телеграм-каналах будет всё то же самое. И вот тогда где ты будешь свои вопросы задавать? Под другим ником тебя всегда будут узнавать и сразу в игнор и бан отправлять без всяких выяснений. А в бане ты вопросы свои не поспрашиваешь. Так что подумай над этим.