2017-08-03 4 views
1

アルファベットの文字の範囲を含む特定の文字に一致するように単純な正規表現を作成すると予想よりもずっと困難です。グループにグループを入れる[123 [a-u]]

私はregex101をしばらく使っていますが、すべての組み合わせが一致しないようです。

例式: [\n\r\t\s\(\)-]

好ましい発現: [[a-z][a-Z]\n\r\t\s\(\)-]

例入力: (123) 241()-127()()() abc ((((((((

理想的表現が、私は常に可能性を知っている桁

を除くすべての文字をキャプチャします手動で "abcdefgh"を入力....しかし、簡単な方法があります。私はまた、数字だけをキャプチャする簡単な方法があることを知っていますが、私は最終的に同様に含める必要がありますいくつかの特殊文字と文字があります。

答えて

0

かなり小さい文字を見落としました。私が探していた用語は、明らかに「オルタナティブ」でした。

[\r\t\n]|[a-z]欠損要素は|文字です。これにより、最初のグループのものと一致するものができ、次に2番目のグループと一致するように続けます。

少なくとも、この具体的な例をテストすると私の結論です。

1

正規表現を使用すると、上記の例のように、aとzの間のアルファベットの任意の文字を取り込む[a-z]のような文字の範囲でトリガする正規表現を設定できます。複数の文字をトリガするには、その文字に "+"を追加するか、キャプチャする文字数を制限する場合は、{n}を使用できます.nはキャプチャする文字の数です。したがって、[a-z]+は1つ以上です。[a-z]{4}は、aとzの間の最初の4文字に一致します。

+0

と一致しません申し訳ありませんが、私の質問はおそらく十分ではありませんでした。私は一行に複数の文字をマッチさせる方法を見ていませんでしたが、手作業でアルファベットを入力しなくても[123abcdefghi]のように表現を作成することができました。他のどこかで私の質問に対する答えが見つかったと思いますが、これは "別の"文字です。 – Spencel

+1

ええ、パイプ '|'を正規表現で使うことができます。 –

1

部分区間を使用できます。たとえば、[a-j]は、aからjまでのすべての文字と一致します。文字列a6b7cd[a-j]{2}cdと一致します。また、次のような同じグループ内でこれらの間隔を複数回使用することもできます:[a-j4-6]{4}。この正規表現はab44と一致しますが、ab47

関連する問題