スレッドのタイトルは少し誤解を招くかもしれませんが、名前を付けるより良い方法を見つけられませんでした。正規表現を使って、文字xとyのみを含む単語を探す方法を見つけたいと思いますが、xは偶数回使用し、yは奇数回使用しなければなりません。正規表現、偶数/奇数番号の文字を使用
0
A
答えて
1
私は2つの正規表現でそれを行う方法を知っています。
この1つのチェックもXの数(少なくとも2つ)がある場合:
/^(y*xy*x)+y*$/
そしてこれチェック奇数Yの数(少なくとも一つ)がある場合:
/^(x*yx*y)*x*yx*$/
両方は、xとyの排他的な文字列と一致します。
0
私は私のエディタでこれをテストしてみた:あなたが行文字の、終わりを始めて、スペースを追加することもできますので、
(?=([^x]*x[^x]*x[^x]*)*)(?=([^y]*y[^y]*y[^y]*)*[^y]*y[^y]*)
これは、部分文字列を見つけます:
[^\s](?=([^x]*x[^x]*x[^x]*)*)(?=([^y]*y[^y]*y[^y]*)*[^y]*y[^y]*)[$\s]
それを破るために[^x]*x[^x]*x[^x]*
は最初のxが見つかるまでnot-xをつかみ、2番目のxが見つかるまでそれ以外のものをつかみます。これは()*で囲まれているので、xのすべてのペアが見つかるように無制限に繰り返します。奇数xが残っている場合(奇数xの場合)、正規表現はその単一のxを左にマッチさせることはできません。 同様に、yの場合、yのすべてのペアと一致し、次にyが1つ残っていて、それにすべてyがないことが確認されます。 私は?=を使用して一致させますがキャプチャしないので、同じ文字列でxのyをチェックできます。
0
あなたの要件を満たす1つの正規表現を実装したJavaScriptのテスト済み関数です。私は、ゼロが許容できる(均等な)数のXであると仮定しています。正規表現は複数の並んだコメントで文書化されています。
function has_even_X_odd_Y_word(text) {
/*#!(?#!js\/i re_even_x_odd_y Rev:20170125_2100)
# Match word having even count of X and odd count of Y.
\b # Anchor to start of word.
# First assert odd, non-zero count of Ys in this word.
(?= # Assert odd count of Y.
(?: # Zero or more or more Y pairs.
x*y # Optional Xs preceeding 1st Y.
x*y # Optional Xs preceeding 2nd Y.
)* # End zero or more Y pairs.
x*yx* # Optional Xs around last (odd) Y.
\b # Anchor to end of word.
) # End assert odd count of Y.
# Match even number of Xs (can be zero = even).
(?: # Zero or more X pairs.
y*x # Optional Ys preceeding 1st X.
y*x # Optional Ys preceeding 2nd X.
)* # End zero or more X pairs.
y* # Optional Ys after last (even) X.
\b # Anchor to end of word.
!#*/
var re_even_x_odd_y = /\b(?=(?:x*yx*y)*x*yx*\b)(?:y*xy*x)*y*\b/i;
if (re_even_x_odd_y.test(text)) { return true; }
return false;
} // End has_even_X_odd_Y_word().
この関数は、渡されたテキストに一致する単語がある場合はtrueを返し、そうでない場合はfalseを返します。
関連する問題
- 1. 正規表現奇数/偶数量
- 2. 正規表現「の文字番号」
- 3. 入力の奇数/偶数番号
- 4. C番号:数字と正規表現と中間
- 5. 奇数正規表現の結果... /文字
- 6. 正規表現:ここで1つの文字列で複数の番号&ラベル
- 7. 正規表現は、文字と数字
- 8. 番号のある文字列のJavascript正規表現
- 9. 正規表現[文字列]複数行
- 10. 番号が偶数か奇数かをチェックする関数
- 11. 正規表現以外の非数字、非数字の正規表現を受け入れる正規表現
- 12. 正規表現の行番号を複数の行に返す
- 13. 奇数番号の行に偶数行を追加します。
- 14. 正規表現は、数字
- 15. 使用正規表現は、文字列
- 16. 正規表現の数字+文字列の文字列PHP
- 17. 正規表現を使った正規表現を使用した文字列
- 18. 正規表現は、私は、この正規表現で文字が続く番号をグループ化している
- 19. 電話番号の正規表現と小数点除外
- 20. Dreamweaverの正規表現の番号ファインダー
- 21. 正規表現の番号の一致
- 22. Pythonの正規表現のインデックス番号
- 23. 文字列正規表現の文字を数えて
- 24. 正規表現[任意の番号]
- 25. プロジェクトの正規表現番号ヘルプ
- 26. Angualr2検証番号の正規表現
- 27. 範囲外の正規表現番号
- 28. インドの電話番号正規表現
- 29. 正規表現の置換え番号
- 30. 正規表現の番号+%+ gw
+ 1 2つの正規表現を1つにまとめることができることに注意してください(私の答えのコメントのバージョンを参照)。 – ridgerunner