Регулярное выражение Python для выделения чисел, прикрепленных к номерам, отличным от числа [duplicate]

И вот что-то большее, что я понял из консоли. Как уже упоминалось ранее, восклицательный знак заставляет функцию возвращать логическое значение.

Для последнего синтаксиса:

  (функция my_function () {}) () [  ! d0] 

Мы можем сделать что-то вроде:

  (function add_them (a, b) {return a + b;}) (9,4)  

Как одновременное определение функции и вызов.

Изменить: теперь вы спросите, в чем польза '!' определение функции типа. Давайте рассмотрим следующее:

 ! Function a_would_be_function () {alert («У некоторых барахлов, но внутри функции»);  } ()  

вы хотели бы выполнить такую ​​функцию, как указано выше, но без '!' будет генерировать ошибку. Надеюсь, я понятен.

22
задан A. Rodas 7 April 2013 в 14:47
поделиться

4 ответа

Попробуйте

re.search(r'\bis\b', your_string)

Из docs :

\ b Соответствует пустой строке, но только в начале или конце слово.

Обратите внимание, что модуль re использует наивное определение «слова» как «последовательность буквенно-цифровых символов или символов подчеркивания», где «буквенно-цифровое» зависит от параметров локали или юникода.

Также обратите внимание, что без префикса исходной строки \b рассматривается как «обратное пространство» вместо границы слова регулярного выражения.

27
ответ дан Jean-François Fabre 15 August 2018 в 22:59
поделиться
  • 1
    Спасибо, я добавил flags = re.IGNORECASE – user2161049 7 April 2013 в 15:06
  • 2
    Это не работает для word = "test! & Quot; ! ломает его. – user2161049 7 April 2013 в 15:11
  • 3
    что r требуется в этом утверждении - re.search ( r '\ bis \ b', your_string)? – swordholder 8 October 2013 в 11:46
  • 4
    @swordholder: он создает «сырую строку»: stackoverflow.com/q/2081640/989121 – georg 8 October 2013 в 12:28
  • 5
    @ user2161049: test! не является словом, каким-либо определением, которое я знаю. Интересно, что он работает для сокращений: re.search(r"\bisn't\b", "it isn't bad") возвращает совпадение. – Jeff Learman 14 June 2018 в 17:16

Попробуйте это с использованием границы слова в регулярном выражении:

>>> x="this is a sample"
>>> y="this isis a sample."
>>> regex=re.compile(r"\bis\b")  # For ignore case: re.compile(r"\bis\b", re.IGNORECASE)
>>> regex.findall(y)
[]
>>> regex.findall(x)
['is']

Из документации re.search() .

It matches the empty string, but only at the beginning or end of a word

E.g. r'\bfoo\b' matches 'foo', 'foo.', '(foo)', 'bar foo baz' but not 'foobar' or 'foo3'

Надеюсь, что это поможет!

1
ответ дан Om Prakash 15 August 2018 в 22:59
поделиться

Проблема с регулярным выражением состоит в том, что если строка hte, которую вы хотите найти в другой строке, имеет символы регулярных выражений, она становится сложной. любая строка с скобками не сработает.

Этот код найдет слово

 word="is"
    srchedStr="this is a sample"
    if srchedStr.find(" "+word+" ") >=0  or \
       srchedStr.endswith(" "+word):
        <do stuff>

Первая часть условного поиска текста с пространством с каждой стороны и второй частью улавливает конец строковой ситуации. Обратите внимание, что endwith является логическим, тогда как find возвращает целое число

-5
ответ дан user2771704 15 August 2018 в 22:59
поделиться
0
ответ дан bballdave025 29 October 2018 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: