Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一些两个字母的序列重复了3次&引用;“知足”;及;维持;是这样的话吗_Python_Regex_Python 3.x_Regular Language - Fatal编程技术网

Python 一些两个字母的序列重复了3次&引用;“知足”;及;维持;是这样的话吗

Python 一些两个字母的序列重复了3次&引用;“知足”;及;维持;是这样的话吗,python,regex,python-3.x,regular-language,Python,Regex,Python 3.x,Regular Language,有多少单词包含重复3次的两个字母序列?例如,“满足”和“保持”是这样的词,因为“满足”的顺序“nt”重复三次,“保持”的顺序“in”重复三次 这是我的代码: len([f for f in file if re.match(r'(.*?[a-z]{2}.*?){3}',f)]) 你可以用 \b(?=\w*(\w{2})(?:\w*\1){2})\w+ 看 详细信息 \b-单词边界 (?=\w*(\w{2})(?:\w*\1{2})-紧接着是0+字字符,然后两个字字符被捕获到组1中,然后任

有多少单词包含重复3次的两个字母序列?例如,“满足”和“保持”是这样的词,因为“满足”的顺序“nt”重复三次,“保持”的顺序“in”重复三次

这是我的代码:

 len([f for f in file if re.match(r'(.*?[a-z]{2}.*?){3}',f)])
你可以用

\b(?=\w*(\w{2})(?:\w*\1){2})\w+

详细信息

  • \b
    -单词边界
  • (?=\w*(\w{2})(?:\w*\1{2})
    -紧接着是0+字字符,然后两个字字符被捕获到组1中,然后任何0+字字符必须有两次重复,后跟与组1中相同的值
  • \w+
    -使用一个或多个单词字符
见:

你可以用

\b(?=\w*(\w{2})(?:\w*\1){2})\w+

详细信息

  • \b
    -单词边界
  • (?=\w*(\w{2})(?:\w*\1{2})
    -紧接着是0+字字符,然后两个字字符被捕获到组1中,然后任何0+字字符必须有两次重复,后跟与组1中相同的值
  • \w+
    -使用一个或多个单词字符
见:

下面是一个简单的正则表达式:

.*(\w{2}).*\1.*\1
它捕获具有
(\w{2})
的组中的两个字母,然后具有相同字母的同一组必须在
\1
中出现两次以上

下面是一个实际的例子:

import re

text = """
How many words contain some two-letter sequence repeated 3 times? For example, "contentment" and "maintaining" are such words because "contentment" has the sequence "nt" repeated three times and "maintaining" has the sequence "in" repeated three times.
"""


def check(word):
    return re.match(r".*(\w{2}).*\1.*\1", word)


def main():
    for word in text.split():
        if check(word):
            print(word)


main()
下面是一个简单的正则表达式:

.*(\w{2}).*\1.*\1
它捕获具有
(\w{2})
的组中的两个字母,然后具有相同字母的同一组必须在
\1
中出现两次以上

下面是一个实际的例子:

import re

text = """
How many words contain some two-letter sequence repeated 3 times? For example, "contentment" and "maintaining" are such words because "contentment" has the sequence "nt" repeated three times and "maintaining" has the sequence "in" repeated three times.
"""


def check(word):
    return re.match(r".*(\w{2}).*\1.*\1", word)


def main():
    for word in text.split():
        if check(word):
            print(word)


main()

你的代码有什么问题?@usr2564301当前的代码没有捕获2个匹配的
[a-z]{2}
,这是验证它是否再次出现所需的。关于如何将“三元组”称为一个字母,后跟另一个字母,后跟第一个字母,如“ama”或“ere”。例如,“合并”有两次出现的“ama”,而“撤销引用”有两次出现的“ere”。-请参见“代码< > w { 2 } /代码>使用<代码> \W{ 3 } /代码>并在分组后删除<代码> { 2 } /COD>,请参见接受对您工作最佳的答案(参见)。您的代码有什么错误?@ UR2525301,当前代码不捕获2个匹配的<代码> [AZ] { 2 }。需要验证它是否再次出现。关于如何将“三元组”称为一个字母后接另一个字母后接第一个字母的模式,如“ama”或“ere”。例如,“合并”有两次出现的“ama”,而“撤销引用”有两次出现的“ere”。-请看,只需替换<代码> \W{2 } /代码>用<代码> \W{ 3 } /代码>并在分组之后删除<代码> { 2 } /COD>,请参阅。请考虑接受对您最有效的答案(参见)。我有一个快速问题。顺便说一句,非常感谢你!!我怎么称呼“三元组”呢?一个字母后面跟着另一个字母,后面跟着第一个字母,比如“ama”或“ere”。例如,“mergage”有两次出现的“ama”,而“dereference”有两次出现的“ere”。@DylanYoung同样的基本原则,您捕获组中的第一个字母,然后用\1或\2引用该组。我有一个简短的问题。顺便说一句,非常感谢你!!我怎么称呼“三元组”呢?一个字母后面跟着另一个字母,后面跟着第一个字母,比如“ama”或“ere”。例如,“mergage”有两次出现的“ama”,而“dereference”有两次出现的“ere”。@DylanYoung同样的基本原则,您捕获组中的第一个字母,然后用\1或\2引用该组