我需要找到所有符号' y'辅音字母之间:
例如,在'tyrypyr'
中,我需要在2,4和6位置找到y。
在'tyraypyr'
- 2和7中,而不是5,因为a
前面有y
。
我尝试/[BCDFGHJKLMNPQRSTVWXZ]y[BCDFGHJKLMNPQRSTVWXZ]/gi
模式。但它不是y
中的'tyrypyr'
捕获中心(仅查找'tyr'
和'pyr'
)
如果在*
等表达式中添加/[BCDFGHJKLMNPQRSTVWXZ]*y[BCDFGHJKLMNPQRSTVWXZ]/gi
,但在y
a
之后错误地匹配tyraypyr
。
在辅音字母之间找到符号y
的正确方法是什么。并且,如果可能只有y
(没有辅音字母,y
而不是'tyr'
和'pyr'
)。因为我想找到这个y
来用其他符号替换它。
答案 0 :(得分:1)
使用lookarounds:
(?<=[BCDFGHJKLMNPQRSTVWXZ])y(?=[BCDFGHJKLMNPQRSTVWXZ])
在行动here中查看。
当你的正则表达式没有时,这是有效的,因为前瞻是一个0宽度的匹配,它不会转发你的匹配指针,而你的正则表达式正在消耗下一个辅音。
答案 1 :(得分:1)
您需要positive Lookahead and Lookbehind
/(?<=[BCDFGHJKLMNPQRSTVWXZ])y(?=[BCDFGHJKLMNPQRSTVWXZ])/gi
Here它是
你的比赛是3个字符长。 tyrypyr
长度为7个字符,因此您最多只能找到两次。