我今天有两个正则表达式任务要做——我正确地完成了一个,而另一个失败了。
第一个任务是找出——在很长很长的文本中——所有以“F”开头并以元音结尾的单词:
(\bf)\w*([euioay]\b)
它工作得很好。
第二个对语言学学生来说太难了;-)
我必须找到所有重复至少两次的两个字母序列的单词,例如:
我可以帮忙吗?提前致谢 ;-)
最佳答案
让我们来看看:(\w{2})
匹配两个字母(或数字/下划线,但让我们忽略它)并将它们捕获在组号 1 中。然后 \1
匹配该组匹配的任何内容。所以
\b\w*(\w{2})\w*\1
是你要找的(你不需要
{2,}
因为如果三个字母重复,两个字母也会重复。不检查两个以上会使正则表达式更有效率。你可以在 \1
反向引用成功后停止匹配)。
关于正则表达式:两个字母重复两次的单词(例如 ABpoiuyAB、xnvXYlsdjsdXYmsd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15600053/