おはよう :)
次の文字列を想像してください。
-2x^3+3x^2-4x+1.5
「^」が続かない「x」を抽出したい。を試してみ(x)[^\^]
ましたが、これは最後の「x」の後ろの「+」もキャプチャします。次の「+」なしで「x」だけを抽出するにはどうすればよいですか? これは可能ですか、それとも残りのプログラムコードで手動で行う必要がありますか?
ご挨拶!
おはよう :)
次の文字列を想像してください。
-2x^3+3x^2-4x+1.5
「^」が続かない「x」を抽出したい。を試してみ(x)[^\^]
ましたが、これは最後の「x」の後ろの「+」もキャプチャします。次の「+」なしで「x」だけを抽出するにはどうすればよいですか? これは可能ですか、それとも残りのプログラムコードで手動で行う必要がありますか?
ご挨拶!
正規表現エンジンがサポートしている場合は、先読みアサーションを使用できます。
(x)(?=[^^])
x
これは、以外の任意の文字が後に続くものと一致します^
が、次の文字はキャプチャしません。
文字列の最後でも一致させたい場合は、次のようにx
使用できます。
(x)(?=[^^]|$)
これは、文字列の末尾x
以外の任意の文字が後に続くものと一致しますが、次の文字が存在する場合はキャプチャしません。^
その場合、ジェリーのソリューションはもう少しエレガントですが。
次のように否定先読みを使用できます。
x(?!\^)
バックスラッシュはキャレットをエスケープするためのものであるため、行頭ではなく文字通りのキャレットと一致します。
x
この式は、文字が後に続かないものと一致します^
。