文字列を。で解析していますTRegExpr
。式は次のようになります。
(.*$)
文字列全体を検索する必要があることを意味しますが、コマンドを使用して検索した後、空の文字列を検索しますが、記号ExecNext
のために行はすでに終了しています。$
誰かがそのような行動を説明できますか?
デフォルトでは、正規表現.
(ドット)は改行と一致しません。入力に改行がある場合は、この動作が表示されます。
これを試して:
(?s)(.*$)
式(?s)
は、正規表現の残りの部分で「ドットが改行に一致する」をオンにします。
*
それは数量詞のせいです。前の文字の0回以上の出現に一致します。0 Occurrencesは、空の文字列と一致することを意味します。
$
アンカー、ゼロ幅アサーション。文字列の終わりとは一致しません。文字列の終わりの前(または文字列の最後の文字である改行の前)の位置と一致します。
では、どうなりますか?
正規表現は、最初は文字列から最後まで一致します。
正規表現エンジンの位置は、最後の文字の後ですが、文字列の終わりの前です。ここで呼び出すとExecNext
、文字列の終わりの前の空の文字列と一致します。
これを回避したい場合は、+
数量詞を使用してください。一致するには少なくとも1文字が必要です==>一致.+$
するものは1つだけです。