おはよう :)
次の文字列を想像してください。
-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この式は、文字が後に続かないものと一致します^。