我有两个单词a
和b
。我需要知道a
的前x个字符(比如x = 3)是否匹配b
的前x个字符,但是,如果a
比x个字符长,那么a
的后续字符必须匹配b
中的相应字符。
让我用一个例子来解释。假设a
是“Col”,b
是“Colombia”,x = 3。如果a
的前3个字符与b
中的前3个字符匹配,则其TRUE
。如果a
是“科洛”或“Colom”,正则表达式也应该返回TRUE,因为这些情况匹配b
。但是,如果a
是“科尔”或“Colum”,则为FALSE。
我提出了两个解决方案,但似乎没有一个是完美的。
(a, "^Col(o|ol|olo|olom|olomb|olombi|olombia)")
("Colombia", ^a)
第一个解决方案满足所有条件,但写起来非常乏味,特别是如果你有很多单词要匹配。第二种情况更容易写,但它将匹配“C”或“Co”,我需要匹配最小的前3(或x)。
有没有办法写一个正则表达式来满足我的需要?
谢谢!
1条答案
按热度按时间6jygbczu1#
一般来说,这就是你所描述的:
(\b\w{3,}\b).*?\b\1
https://regex101.com/r/x1Z4mg/1
说明:
这可以被扩展为不跨行、对第二个字进行前瞻等。
或者将 words 也更改为文字的混合。
那要看需要什么了