如何使用正则表达式判断字符串的第一个和最后一个字符是否匹配?

时间:2019-03-11 08:03:34

标签: python regex string

我刚开始使用Python和Regex,我想检查一下字符串的第一个和最后一个字符是否相同。

如果第一个和最后一个字符相同,则返回“ True”(例如:“ aba”) 如果第一个字符和最后一个字符不同,则返回“ False”(例如:“ ab”)

下面是我写的代码:

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

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

但是从上面的代码中,我看不到任何输出

5 个答案:

答案 0 :(得分:5)

您为什么要对正则表达式进行过度设计?编程的原则之一应该是使其保持简单,例如:

string[0] is string[-1]

还是需要正则表达式?

答案 1 :(得分:2)

上面@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'> 

答案 2 :(得分:2)

当且仅当您确实要使用正则表达式(出于学习目的)时:

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

答案 3 :(得分:1)

我认为这是您要执行的正则表达式:

代码:

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

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

输出:

aba

答案 4 :(得分:0)

如果您想在以下使用正则表达式进行检查:

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

这将匹配行或字符串的第一个和最后一个字符(如果它们匹配),然后返回匹配的字符,在这种情况下,它将打印行的字符串,否则将跳过