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

Python 如何使用正则表达式判断字符串的第一个字符和最后一个字符是否匹配?,python,regex,string,Python,Regex,String,我对使用Python和正则表达式比较陌生,我想检查字符串的第一个字符和最后一个字符是否相同 如果第一个和最后一个字符相同,则返回“True”(例如:“aba”) 如果第一个和最后一个字符不相同,则返回“False”(例如:“ab”) 下面是我编写的代码: import re string = 'aba' pattern = re.compile(r'^/w./1w$') matches = pattern.finditer(string) for match in matches pri

我对使用Python和正则表达式比较陌生,我想检查字符串的第一个字符和最后一个字符是否相同

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

下面是我编写的代码:

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

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

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

为什么要过度设计正则表达式?编程的一个原则是保持简单,如:

string[0] is string[-1]

或者是否需要正则表达式?

我认为这就是您试图执行的正则表达式:

代码:

输出:

aba

@Tobias的上述答案非常完美和简单,但是如果您想要使用regex解决方案,请尝试下面的代码

试试这个代码

代码:

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'> 
输出:

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'> 

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

输出:

ok
nok
same
说明:

^(.).*\1$
  • ^
    起锚线
  • ()
    匹配行的第一个字符并将其存储在组中
  • *
    随时匹配任何字符
  • \1
    反向引用第一个组,在这种情况下,第一个字符与最后一个字符相等
  • $
    线端锚点
演示:

否则,最好的方法就是简单地使用比较
string[0]==string[-1]

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

ok
nok
same

如果要使用正则表达式进行检查,请使用以下命令:

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

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

正则表达式应为
^(.).\1$
。我不确定使用了哪些函数。谢谢@Tobias,但我会通过读取Python文件解析大量数据,我认为正则表达式更适合这些文件。String(0)= String(-1)工作考虑任何事情,并没有具体限制自己的字母(意思是只适用于干净的数据)。因此专门寻找regex实现感谢Omkar,它真的很有效。我假设我们只是将第一个字符与字符串末尾的第一个匹配?我的理解正确吗?@bzflag是的。我们使用()将第一个字符分组,然后将第一个组与\1匹配