2017-05-08 25 views
2

私はWORDの最後の文字と一致させようとしています。正規表現の最後の文字

WORDは、空白以外の文字のシーケンス '[^ \ n \ r \ t \ f]'または^ $と一致する空の行です。

私はこれはやって作られた式: は、 "[^ \ nは\トン\ rを\ F] \(:?[\ $ \ N \トン\ rを\ F] \)"

正規表現は、空白文字または行の終わりに続く空白以外の文字と一致します。

しかし、結果から次の空白文字を除外する方法と、行の終わりに先行する文字をキャプチャしないように見えない理由はわかりません。

"Hi World!"という文字列を使用すると、 "i"と "!"捕獲される。

代わりに「i」と表示されます。

この問題を解決するにはどのような手順が必要ですか? [^ \n\t\r\f](?:[ \$\n\t\r\f])における非捕捉グループ(?:...)がまだ(消費)空白文字と一致する(従って、それは試合の一部となる)と$シンボルがないように、文字列の末尾に一致しないこと

+1

質問:どのように空の行に一致すると思われますか?それの最後の特徴は何ですか? –

+0

どのようなフレーバ正規表現を使用していますか?キャプチャグループはあなたのためのものなのでしょうか、それともすべての種類の取引でなければならないのですか? –

+0

空行の先頭に移動することも、空行をスキップすることもできます。私はその行動を心配しているスーパーではない。キャプチャグループは私のためのものです。私はelisp正規表現の味を使用しています。 –

答えて

3

注文字クラス内に文字列の終わりのアンカーがある場合は、リテラル$シンボルとして解析されます。

あなたは

\S(?!\S) 

を使用することができますが(原因(?!\S)否定先読みに)非空白文字に従わないregex demo

\S試合の非空白文字を参照してください。