2

私はこのようなサンプル文字列を持っています:(aibicidieifより複雑な文字列ですが同様の形式です)そして私は次のような正規表現を試しましたが、最初と最後の要素と(?<=i).*?(?=i)をキャプチャしません。 af

区切り文字の間にあるすべてのものが必要ですが、正規表現はその前後にiある文字のみを検索します。iオプションにする方法はあり(?=i)ます(?<=i)か?

http://regexr.com?30mjf

4

3 に答える 3

4

どの言語を使用していますか? ほとんどの言語では、正規表現を使用して文字列を分割できます。たとえば、Python では次のようになります。

>>> re.split(r'i', 'aibicidieifi')
['a', 'b', 'c', 'd', 'e', 'f', '']

ここでr'i'は、より複雑な正規表現を表す文字列に置き換えることができます。

または、次のようなこともできます。

(?<=i|^).*?(?=i|$)

先読みと後読みに交互にアンカーを追加することで、文字列の先頭と末尾の文字が一致するようになりますが、一部の言語では可変長の後読みがサポートされていないため、これが機能しない場合があります。

お使いの言語が可変長の後読みをサポートしていない場合でも、次の代替手段を使用できます。

(?:(?<=i)|^).*?(?=i|$)
于 2012-04-18T21:40:10.200 に答える
0

単に[^i]+仕事をしませんか?

于 2012-04-18T21:36:24.270 に答える
0

入力文字列と区切り文字が、作成しているのと同じくらい簡単であると仮定すると、次のようになります。

$valuesArray = explode('i', $input);

次に、作成した配列から値にアクセスします。

于 2012-04-18T21:38:26.350 に答える