2

给定UnicodeString, s, contains"Mary\n"RegexMatcher, m, 用 pattern 编译"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)orMULTILINE标志) 。请参阅有关锚点的本教程(向下滚动大约一半到“以换行符结尾的字符串”)。

改为使用\z- 仅匹配字符串的末尾。

于 2012-09-24T14:23:10.557 回答