regex - ICU 中的 $ 匹配

标签 regex icu

给定 UnicodeStrings,包含 "Mary\n"RegexMatcher m,使用模式“Mary$”编译,如果我这样做:

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

然后b被设置为true。为什么?该模式表示 "Mary"'y' 应位于字符串的末尾。在本例中,它不是字符串的结尾,而是 '\n' 。仅当设置了 UREGEX_MULTILINE 选项时,才应将其设置为 true。对吗?

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

最佳答案

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

使用 \z 代替 - 只匹配字符串的最末尾。

关于regex - ICU 中的 $ 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12566811/

相关文章:

python - 如何在 re.findall 中显示 python 中具有字符串和数字的模式的所有匹配项

r - 有没有办法过滤文本字符串以获取与模式不同的值?

php - 正则表达式:删除方案,除非它是 http(s)。 (捕获负后视模式)

internationalization - ICU 的整理器假设 "a"和 "ą"是相同的

c++ - ustream 是如何工作的?

iphone - 从正则表达式匹配组中删除尾随空格

c# - 在 C# 中使用正则表达式解析日期

c - C中字节的Unicode代码点流?

javascript - 非法第一个字符的正则表达式