Регулярное выражение для $ gme или gme с пробелом или без пробела после или перед ним в python

#python #regex

#python #регулярное выражение

Вопрос:

Мне нужно регулярное выражение, которое может найти все $ gme или gme. Он не должен находить $ gme или gme в строке типа

привет, $ gmee

или

привет, g $ gme

Так, например, в строке, такой как

Привет, gme. Привет, $ gme. Привет, $ gmee. Привет, gmee.

Он должен найти только gme или $ gme из приведенной выше строки.

Он также должен найти gme или $ gme, когда перед или после строки нет пробела, например

$ gme

или

gme

Я пишу скрипт, который может подсчитывать, сколько раз $ gme или gme упоминается в строке

Итак, в строке типа

Привет, gme. Привет, $ gme. Привет, $ gmee. Привет, gmee.

Это упоминается только два раза.

Надеюсь, теперь все ясно.

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

 $gme$|sgmes|sgme|^gmeS
 

Смотрите демонстрационный скриншот.

Вышеприведенный сбой, когда до и после $ gme или gme нет пробела. А также оно включает gmee и $ gmee, которые я не хочу включать.

Комментарии:

1. Написание скрипта для запрета спама $ gme на wsb?

Ответ №1:

Вы можете использовать сочетание пробелов и границ слов:

 (?<!S)$?gmeb
 

Смотрите демонстрацию регулярных выражений

Подробные сведения:

  • (?<!S) — отрицательный взгляд назад, который не соответствует совпадению, если сразу слева от текущей позиции нет символа, не содержащего пробелов (таким образом, начало строки или пробел должны появляться сразу слева)
  • $? — необязательный $ символ
  • gme — слово
  • b — щедрое слово.