gpt4 book ai didi

python - 以 t 开头但结尾不是 e 的单词

转载 作者:行者123 更新时间:2023-12-04 08:35:39 26 4
gpt4 key购买 nike

我正在尝试创建一个以 t 或 T 开头且不以 e 字母结尾的正则表达式。到目前为止,我尝试了下面的代码,但它没有给我理想的结果。谁能告诉我这里到底缺少什么?

my_str = my_file.read()

word = re.findall("[tT].*[^e]$", my_str)

print(word)

最佳答案

您可以使用

\bt(?:[a-z]*[a-df-z])?\b
\bt[a-z]*\b(?<!e)
为了完整起见,这里有一个正则表达式来匹配任何以西里尔字母开头的单词 т并且不以西里尔字母结尾 е :
\bт[^\W\d_]*\b(?<!е)
regex demo #1 , regex demo #2和一个 Cyrillic regex demo .
如果您需要不区分大小写的匹配,请添加 re.I :
re.findall(r'\bt(?:[a-z]*[a-df-z])?\b', text, re.I)
还有关于单词边界的注释:如果单词可以粘在 _或数字,使用字母边界而不是单词边界:
r'(?<![a-z])t(?:[a-z]*[a-df-z])?(?![a-z])'
r'(?<![^\W\d_])т[^\W\d_]*(?![^\W\d_])(?<!е)' # Unicode letter boundaries
正则表达式详情
  • \b - 单词边界(字符串的开头或紧跟在字符之后的位置,而不是数字、字母、下划线)
  • (?<![a-z]) ( (?<![^\W\d_]) 是一个 Unicode 感知等价物) - 一个负向后视匹配一个位置,前面没有紧跟一个字母
  • t - 一个 t来信
  • (?:[a-z]*[a-df-z])? - 可选的非捕获组匹配 0 个或多个字母,然后是除 e 之外的字母
  • \b - 字边界
  • (?![a-z]) ( (?![^\W\d_]) 是一个 Unicode 感知等价物) - 一个负向前瞻,匹配一个没有紧跟一个字母的位置。

  • 还,
  • \bt[a-z]*\b(?<!e)匹配单词边界,t ,任何零个或多个小写 ASCII 字母(任何带有 re.I 的 ASCII 字母),然后单词边界标记单词的结尾和负向后视 (?<!e)如果存在 e 则匹配失败词尾
  • [^\W\d_]* - 匹配零个或多个 Unicode 字母。

  • a Python demo :
    import re
    text = r't, train => main,teene!'
    cyr_text = r'таня тане работе'
    print( re.findall(r'\bt(?:[a-z]*[a-df-z])?\b', text, re.I) )
    # => ['t', 'train']
    print( re.findall(r'\bt[a-z]*\b(?<!e)', text, re.I) )
    # => ['t', 'train']
    print( re.findall(r'\bт[^\W\d_]*\b(?<!е)', cyr_text, re.I) )
    # => ['таня']
    print( re.findall(r'(?<![^\W\d_])т[^\W\d_]*(?![^\W\d_])(?<!е)', cyr_text, re.I) )
    # => ['таня']

    关于python - 以 t 开头但结尾不是 e 的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64818532/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com