0

おはよう :)

次の文字列を想像してください。

-2x^3+3x^2-4x+1.5

「^」が続かない「x」を抽出したい。を試してみ(x)[^\^]ましたが、これは最後の「x」の後ろの「+」もキャプチャします。次の「+」なしで「x」だけを抽出するにはどうすればよいですか? これは可能ですか、それとも残りのプログラムコードで手動で行う必要がありますか?

ご挨拶!

4

2 に答える 2

1

正規表現エンジンがサポートしている場合は、先読みアサーションを使用できます。

(x)(?=[^^])

xこれは、以外の任意の文字が後に続くものと一致します^が、次の文字はキャプチャしません。

文字列の最後でも一致させたい場合は、次のようにx使用できます。

(x)(?=[^^]|$)

これは、文字列の末尾x以外の任意の文字が後に続くものと一致しますが、次の文字が存在する場合はキャプチャしません。^その場合、ジェリーのソリューションはもう少しエレガントですが。

于 2013-10-29T17:14:23.200 に答える
1

次のように否定先読みを使用できます。

x(?!\^)

バックスラッシュはキャレットをエスケープするためのものであるため、行頭ではなく文字通りのキャレットと一致します。

xこの式は、文字が後に続かないものと一致します^

于 2013-10-29T17:15:14.040 に答える