我研究了scikit-learn中tokenization的实现方式,并发现了这个正则表达式(源代码):
token_pattern = r"(?u)\b\w\w+\b"
正则表达式很简单,但我以前从未见过 (?u)
这部分。有人可以解释一下这部分的作用吗?
正则表达式很简单,但我以前从未见过(?u)
这部分。请问这部分是做什么用的?
它为此表达式打开了re.U
(re.UNICODE
)标志。
从模块文档中得知:
(?iLmsux)
(来自集合'i'、'L'、'm'、's'、'u'、'x' 中的一个或多个字母。)该分组匹配空字符串;这些字母设置相应的标志:
re.I
(忽略大小写),re.L
(区域相关),re.M
(多行),re.S
(点匹配所有),re.U
(Unicode相关),以及re.X
(详细模式),适用于整个正则表达式。 (这些标志在模块内容中有描述。)这很有用,如果您希望将标志包含在正则表达式中,而不是将标志参数传递给re.compile()
函数。
re.U
标志。 - vaultah