我刚开始使用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)
但是从上面的代码中,我看不到任何输出
答案 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)
这将匹配行或字符串的第一个和最后一个字符(如果它们匹配),然后返回匹配的字符,在这种情况下,它将打印行的字符串,否则将跳过