如何使用Regex判断字符串匹配的第一个和最后一个字符



我对使用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)

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

相关内容

  • 没有找到相关文章

最新更新