正则表达式:正面前瞻和单词边框问题

时间:2010-03-18 18:20:41

标签: regex regex-lookarounds

再次问好Stackoverflow的人!

假设我有这些话:智能手机,智能手机

我想匹配其中的子串“phone”。但是,在这两种情况下,我只想要返回“电话”,而不是第一种情况下的“电话”。除此之外,我只想在单词“phone”只是后缀时才需要匹配,例如:

fonephonetics(只是一个例子)不匹配。

我认为正则表达式

(phone([?=s])?)\b

会给我我需要的东西,但它目前正在匹配“手机”和“手机”,而不是“fonephonetics”。我不需要“手机”。对于这两种情况,我都想要“电话”。

关于什么是错的,以及我能做什么的任何想法?

提前谢谢!

1 个答案:

答案 0 :(得分:5)

匹配phone后跟s\b\b

phone(?=s?\b)

前瞻是零宽度匹配,因此s不会作为匹配的一部分返回。