私はこのようなサンプル文字列を持っています:(aibicidieif
より複雑な文字列ですが同様の形式です)そして私は次のような正規表現を試しましたが、最初と最後の要素と(?<=i).*?(?=i)
をキャプチャしません。 a
f
区切り文字の間にあるすべてのものが必要ですが、正規表現はその前後にi
ある文字のみを検索します。i
オプションにする方法はあり(?=i)
ます(?<=i)
か?
私はこのようなサンプル文字列を持っています:(aibicidieif
より複雑な文字列ですが同様の形式です)そして私は次のような正規表現を試しましたが、最初と最後の要素と(?<=i).*?(?=i)
をキャプチャしません。 a
f
区切り文字の間にあるすべてのものが必要ですが、正規表現はその前後にi
ある文字のみを検索します。i
オプションにする方法はあり(?=i)
ます(?<=i)
か?
どの言語を使用していますか? ほとんどの言語では、正規表現を使用して文字列を分割できます。たとえば、Python では次のようになります。
>>> re.split(r'i', 'aibicidieifi')
['a', 'b', 'c', 'd', 'e', 'f', '']
ここでr'i'
は、より複雑な正規表現を表す文字列に置き換えることができます。
または、次のようなこともできます。
(?<=i|^).*?(?=i|$)
先読みと後読みに交互にアンカーを追加することで、文字列の先頭と末尾の文字が一致するようになりますが、一部の言語では可変長の後読みがサポートされていないため、これが機能しない場合があります。
お使いの言語が可変長の後読みをサポートしていない場合でも、次の代替手段を使用できます。
(?:(?<=i)|^).*?(?=i|$)
単に[^i]+
仕事をしませんか?
入力文字列と区切り文字が、作成しているのと同じくらい簡単であると仮定すると、次のようになります。
$valuesArray = explode('i', $input);
次に、作成した配列から値にアクセスします。