2016-11-18 7 views
0

子音の間にすべての記号「y」を見つける必要があります。 たとえば、'tyrypyr'の場合、2,4,6の位置でyを見つける必要があります。 の場合'tyraypyr' - yの前にaがあるため、2と7では5ではありません。子音の間のすべての記号「y」を見つけるために

私は/[BCDFGHJKLMNPQRSTVWXZ]y[BCDFGHJKLMNPQRSTVWXZ]/giパターンを試してみます。しかし、それは'tyrypyr'の中間yをキャプチャされていない/[BCDFGHJKLMNPQRSTVWXZ]*y[BCDFGHJKLMNPQRSTVWXZ]/giのような表現で*を追加する場合

(のみ'tyr''pyr'を見つける。)が、誤っtyraypyrayに一致します。

子音の間に記号yを見つける正しい方法は何ですか。また、可能であれば、y(子音はなし、y、代わりに'tyr''pyr')とすることができます。私はこのyを別のシンボルと置き換えることができます。 lookarounds

+0

正規表現のフレーバーとは何ですか?私はJavaScriptを推測する? –

+0

MS SQLのC#ライブラリ、私は – Andrey

+0

だと思いますがなぜ '/ gi'ですか? –

答えて

1

(?<=[BCDFGHJKLMNPQRSTVWXZ])y(?=[BCDFGHJKLMNPQRSTVWXZ]) 

は、アクションhereでそれを参照してください。

これは、あなたの正規表現が次の子音を消費している間に、先読みが0幅のマッチでマッチポインタを転送しないため、正規表現がないときに機能します。

+0

ありがとうございます! – Andrey

1

あなたはそれがあなたの試合は3文字の長さだった

あるpositive Lookahead and Lookbehind

/(?<=[BCDFGHJKLMNPQRSTVWXZ])y(?=[BCDFGHJKLMNPQRSTVWXZ])/gi 

Hereを必要としています。 tyrypyrの長さは7文字なので、最大で2回しか見つかりませんでした。

+0

うわー、それは素晴らしいです、ありがとう! – Andrey

+0

私は、否定的なlookaheads/lookbehindsを使うと、文字列の始めと終わりに 'y'文字が一致すると私は反対します。 – Phylogenesis

+0

@Phylogenesis hu?それはできません。この[regex101](https://regex101.com/r/nihd4Y/2) – Aaron

関連する問題