如何查找不包含特定字母的单词?

2024-06-08 05:47:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用正则表达式和我的文本文件编写代码。逐行包含我的单词:

nana
abab
nanac
eded

我的目的是:显示不包含给定子字符串字母的字母的单词。在

例如,如果我的子字符串是“bn”,那么我的输出应该只有eded。因为nana和{}包含“n”,而{}包含“b”。在

我写了一个代码,但它只检查子字符串的第一个字母。在

^{pr2}$

我怎么解决这个问题?在


Tags: 字符串代码目的字母单词文本文件bnpr2
3条回答

@Xosrov有正确的方法,有一些小问题和错误。以下版本的同一逻辑起作用

import re

def xstring(substring, words):
    regex = re.compile('[%s]' % ''.join(sorted(set(substring))))
    # Excluding words matching regex.pattern
    for word in words:
        if not re.search(regex, word):
            print(word)

words = [
    'nana',
    'abab',
    'nanac',
    'eded',
]

xstring("bn", words)

这里,我们只需要一个简单的表达式,例如:

^[^bn]+$

我们在not char类[^bn]中添加b和{},并收集所有其他字符,然后通过添加^和{}锚定,我们将使所有可能具有b和{}的字符串失败。在

Demo

测试

^{pr2}$

正则表达式

如果不需要这个表达式,可以在regex101.com中修改/更改它。在

正则表达式电路

jex.im可视化正则表达式:

enter image description here

如果要检查字符串是否包含一组字母,请使用括号。
例如,使用[bn]将匹配包含其中一个字母的单词。在

import re
substring = "bn"
regex = re.compile('[' + substring + ']')
def xstring():
    with open("dename.txt") as f:
        for line in f:
            if(re.search(regex, line) is None):
                print(line)
xstring()

相关问题 更多 >

    热门问题