Как использовать регулярное выражение, чтобы сказать, если первый и последний символ строки соответствуют? - PullRequest
2 голосов
/ 11 марта 2019

Я относительно новичок в использовании Python и Regex, и я хотел проверить, совпадают ли строки первого и последнего символов.

Если первый и последний символы совпадают, то вернуть 'True' (Ex: 'aba') Если первый и последний символы не совпадают, верните 'False' (например: 'ab')

Ниже приведен код, который я написал:

import re
string = 'aba'
pattern = re.compile(r'^/w./1w$')

matches = pattern.finditer(string)
for match in matches
   print (match)

Но из приведенного выше кода я не вижу никакого вывода

Ответы [ 5 ]

5 голосов
/ 11 марта 2019

Почему вы вообще переигрываете с регулярным выражением?Один принцип программирования должен быть простым:

string[0] is string[-1]

Или есть необходимость в регулярных выражениях?

2 голосов
/ 11 марта 2019

тогда и только тогда, когда вы действительно хотите использовать регулярные выражения (для учебных целей):

import re
string = 'aba'
string2 = 'no match'
pattern = re.compile(r'^(.).*\1$')

if re.match(pattern, string):
  print('ok')
else:
  print('nok')
if re.match(pattern, string2):
  print('ok')
else:
  print('nok')

выход:

ok
nok

Пояснения:

^(.).*\1$
  • ^ начало привязки линии
  • (.) соответствует первому символу строки и сохраняет его в группе
  • .* совпадать с любыми символами в любое время
  • \1 обратная ссылка на первую группу, в этом случае первый символ, который навязывает, что первый символ и последний равны
  • $ конец строки привязки

Демо: https://regex101.com/r/DaOPEl/1/

В противном случае лучше всего просто использовать сравнение string[0] == string[-1]

string = 'aba'
if string[0] == string[-1]:
  print 'same'

выход:

same
2 голосов
/ 11 марта 2019

Приведенный выше ответ @Tobias идеален и прост, но если вы хотите найти решение с использованием регулярных выражений, попробуйте следующий код.

Попробуйте этот код!

Код:

import re
string = 'abbaaaa'
pattern = re.compile(r'^(.).*\1$')

matches = pattern.finditer(string)
for match in matches:
   print (match)

Выход:

<_sre.SRE_Match object; span=(0, 7), match='abbaaaa'> 
1 голос
/ 11 марта 2019

Я думаю, что это регулярное выражение, которое вы пытаетесь выполнить:

Код:

import re
string = 'aba'
pattern = re.compile(r'^(\w).(\1)$')

matches = pattern.finditer(string)
for match in matches:
   print (match.group(0))

Выход:

aba
0 голосов
/ 11 марта 2019

, если вы хотите проверить с помощью регулярного выражения ниже:

import re
string = 'aba is a cowa'
pat = r'^(.).*\1$'
re.findall(pat,string)
if re.findall(pat,string):
    print(string)

это будет соответствовать первому и последнему символу строки или строки, если они совпадают, тогда он возвращает соответствующий символ, в этом случае он будет печатать строку строки, в противном случае он пропустит

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...