python - 使用正则表达式查找具有相同或不同字符的单词

标签 python regex

我有一个单词列表,例如:

l = """abca
bcab
aaba
cccc
cbac
babb
"""

我想找到第一个和最后一个字符相同,并且中间两个字符与第一个/最后一个字符不同的单词。

期望的最终结果:

['abca', 'bcab', 'cbac']

我试过这个:

re.findall('^(.)..\\1$', l, re.MULTILINE)

但它也会返回所有不需要的词。 我想过以某种方式使用 [^...] ,但我无法弄清楚。 有一种方法可以使用集合来执行此操作(以过滤上述搜索的结果),但我正在寻找正则表达式。

这可能吗?

最佳答案

编辑:固定使用否定先行断言而不是否定后视断言。阅读@AlanMoore 和@bukzor 解释的评论。

>>> [s for s in l.splitlines() if re.search(r'^(.)(?!\1).(?!\1).\1$', s)]
['abca', 'bcab', 'cbac']

该解决方案使用否定先行断言,这意味着“仅当当前位置后面没有其他内容的匹配项时才匹配当前位置。”现在,看看先行断言 - (?!\1)。所有这一切意味着“仅当当前字符后没有第一个字符时才匹配当前字符。”

关于python - 使用正则表达式查找具有相同或不同字符的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10402998/

相关文章:

iPhone:UITextField 中的正则表达式和文本输入验证失败

php - 文件类型的正则表达式 - jQuery uploader 问题

PHP 正则表达式 : exclude href anchor tags

python - numpy.genfromtxt 和 numpy.loadtxt 的区别,以及 Unpack

Python Xlib.error.BadAccess 尝试访问 X11 快捷键

python - 使用 BeautifulSoup 在 HTML 表格中每个粗体标题后提取行中的特定列

python - Boto Ec2 和弹性 IP

python - 如何使用反斜杠 x\x 代码解码 ascii 字符串

c# - 如何使用正则表达式和/或 linq 解析游戏日志?

regex - 是否有 R 函数来转义正则表达式字符的字符串