正则表达式:两个字母重复两次的单词(例如 ABpoiuyAB、xnvXYlsdjsdXYmsd)

标签 regex

我今天有两个正则表达式任务要做——我正确地完成了一个,而另一个失败了。
第一个任务是找出——在很长很长的文本中——所有以“F”开头并以元音结尾的单词:

(\bf)\w*([euioay]\b)

它工作得很好。

第二个对语言学学生来说太难了;-)
我必须找到所有重复至少两次的两个字母序列的单词,例如:
  • tatarak 是 TATArak,两次“TA”;
  • brzozowski 是 brZOZOwski,两次“ZO”;
  • loremipsrecdks 是 loREmipsREcdks,“RE”两次;

  • 我可以帮忙吗?提前致谢 ;-)

    最佳答案

    让我们来看看:
    (\w{2}) 匹配两个字母(或数字/下划线,但让我们忽略它)并将它们捕获在组号 1 中。然后 \1 匹配该组匹配的任何内容。所以

    \b\w*(\w{2})\w*\1
    

    是你要找的(你不需要 {2,} 因为如果三个字母重复,两个字母也会重复。不检查两个以上会使正则表达式更有效率。你可以在 \1 反向引用成功后停止匹配)。

    关于正则表达式:两个字母重复两次的单词(例如 ABpoiuyAB、xnvXYlsdjsdXYmsd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600053/

    相关文章:

    C++ 正则表达式仅找到 1 个子匹配项

    c++ - 使用正则表达式验证电子邮件和电话字段 Qt

    regex - Glob 模式与亚马逊 s3

    java - 自定义时间字符串的正则表达式

    python - 如何创建包含变量和注释的正则表达式?

    javascript - 检查 id 是否与模式匹配

    javascript - 字符串替换表达式

    ios - 你如何确认一个字符串只包含 Swift 中的数字?

    python - python正则表达式中的贪婪反向引用?

    regex - 用 perl 替换两个字符串之间的所有文本,包括换行符