在ICU匹配$

时间:2012-09-24 14:12:22

标签: regex icu

鉴于UnicodeStrings,包含"Mary\n"RegexMatcherm,使用模式"Mary$"进行编译,如果我这样做的话:

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

然后b设置为true。为什么?该模式表明'y'的{​​{1}}应位于字符串的末尾。在这种情况下,它不是字符串的结尾 - "Mary"是。仅当设置了'\n'选项时,才应将其设置为true。正确?

这是使用C ++ ICU版本4.8.1。

1 个答案:

答案 0 :(得分:3)

这是正常行为:$匹配字符串或行的末尾(取决于(?m)MULTILINE标志)之前任何尾随换行符。请参阅锚上的this tutorial(向下向下滚动到“以换行符结尾的字符串”)。

使用\z代替 - 只匹配字符串的最后一部分。