3

どんなプログラミング言語やライブラリでも、

文字列が正規表現のインスタンスの部分文字列であるかどうかをどのようにテストできますか?

たとえば、正規表現のすべてのインスタンス

RA = /^a{1,2}c{1,2}$/

それは

'ac', 'acc', 'aac', 'aacc'.

文字列「cc」は正規表現のインスタンスではありませんが、正規表現の 2 つのインスタンスの部分文字列です。'c' がそのような性質を持っていることをどのようにテストできますか?

同様に、インスタンスがすべて別の正規表現のインスタンスの部分文字列である正規表現を(一般に)どのように取得できますか。

上記の例では、正規表現

RB = /^a{0,2}c{0,2}$/

インスタンスがあります

'', 'c', 'cc', 'a', 'ac', 'acc', 'aa', 'aac', 'aacc'

これは、RA のインスタンスのすべての部分文字列です。

任意の正規表現 RA の RA からそのような RB をどのように計算できますか?

前もって感謝します!

4

1 に答える 1

1

コンピュータサイエンスの正規表現を意味する場合は、トークンのすべてのサブシーケンスを交互に作成することでこれを行うことができます。

/^a{1,2}c{1,2}$/ -> /^(a{1,2}|a{1,2}c{1,2}|c{1,2}|)$/

長さはO(n 2 )として大きくなることに注意してください。ここで、nは元の式の数値トークンです。

于 2012-07-07T07:08:10.970 に答える