我对使用Python和Regex我相对较新,我想检查字符串是否首先和最后一个字符是相同的。
如果第一个和最后一个字符相同,则返回" true"(ex:'aba')如果第一个和最后一个字符不同,则返回" false"(ex:'ab')
以下是代码,我已经写了:
import re
string = 'aba'
pattern = re.compile(r'^/w./1w$')
matches = pattern.finditer(string)
for match in matches
print (match)
但是从上面的代码中,我看不到任何输出
及时仅当您真正想使用Regex(出于学习目的):
: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
向第一个组的反向注册,在这种情况下,第一个字符强加了第一个char和最后一个是等于 -
$
线锚末端
演示:https://regex101.com/r/daopel/1/
否则最好的方法是简单地使用比较string[0] == string[-1]
string = 'aba'
if string[0] == string[-1]:
print 'same'
输出:
same
为什么您根本可以用正则发动机过度工程?编程的一个原则应该使其保持简单,例如:
string[0] is string[-1]
或者需要正则需要吗?
@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'>
我认为这是您要执行的正则是:
代码:
import re
string = 'aba'
pattern = re.compile(r'^(w).(1)$')
matches = pattern.finditer(string)
for match in matches:
print (match.group(0))
输出:
aba
如果要使用以下方式检查以下:
import re
string = 'aba is a cowa'
pat = r'^(.).*1$'
re.findall(pat,string)
if re.findall(pat,string):
print(string)
这将匹配行的首先和最后一个字符或字符串的字符,如果它们匹配,则它将返回匹配字符,在这种情况下,它将打印行字符串,否则会跳过