2

UnicodeStrings含む"Mary\n"、および 、RegexMatchermパターンでコンパイルされた"Mary$"場合、次のようになります。

m->reset(s);
bool b = m->find() != 0;

b設定されtrueます。なんで?このパターンでは、'y'of"Mary"は文字列の最後にある必要があります。この場合、文字列の末尾ではありません'\n'UREGEX_MULTILINEオプションが設定されている場合にのみ、true に設定する必要があります。右?

これは C++ ICU バージョン 4.8.1 を使用しています。

4

1 に答える 1

3

これは通常の動作です。文字列または行の最後 (またはフラグ$に応じて) で、末尾の改行の前に一致します。アンカーに関するこのチュートリアルを参照してください(「改行で終わる文字列」まで半分ほど下にスクロールします)。(?m)MULTILINE

代わりに使用\z- 文字列の最後でのみ一致します。

于 2012-09-24T14:23:10.557 に答える