2024-05-26 11:11:43 发布
网友
为什么这两个表达式返回相同的输出?你知道吗
phillip = '#awesome ' nltk.re_show('\w+|[^\w\s]+', phillip)
与
nltk.re_show('\w+|[^\w]+', phillip)
两者都返回:
{#}{awesome}
为什么第二个不回来
{#}{awesome}{ }?
似乎在应用正则表达式之前,nltkright会去除字符串中的空白。你知道吗
nltk
参见the source code(或者您可以import inspect和print inspect.get_source(nltk.re_show))
import inspect
print inspect.get_source(nltk.re_show)
def re_show(regexp, string, left="{", right="}"): """docstring here I stripped it for brevity""" print(re.compile(regexp, re.M).sub(left + r"\g<0>" + right, string.rstrip()))
特别是,请参见string.rstrip(),它去除所有尾随空格。你知道吗
string.rstrip()
例如,如果确保phillip字符串右侧没有空格:
phillip
nltk.re_show('\w+|[^\w]+', phillip + '.') # {#}{awesome}{ .}
不知道为什么nltk会这样做,这对我来说似乎是个bug。。。你知道吗
^{}看起来与[A-Za-z0-9_]匹配。由于您正在查找一个或另一个字符(1+“word”字符或1+非“word”字符),它将第一个字符匹配为\w字符,并一直匹配到不匹配的。你知道吗
[A-Za-z0-9_]
\w
如果进行全局匹配,将看到另一个匹配包含空格(第一个非“word”字符)。你知道吗
似乎在应用正则表达式之前,
nltk
right会去除字符串中的空白。你知道吗参见the source code(或者您可以
import inspect
和print inspect.get_source(nltk.re_show)
)特别是,请参见
string.rstrip()
,它去除所有尾随空格。你知道吗例如,如果确保
phillip
字符串右侧没有空格:不知道为什么
nltk
会这样做,这对我来说似乎是个bug。。。你知道吗^{} 看起来与
[A-Za-z0-9_]
匹配。由于您正在查找一个或另一个字符(1+“word”字符或1+非“word”字符),它将第一个字符匹配为\w
字符,并一直匹配到不匹配的。你知道吗
如果进行全局匹配,将看到另一个匹配包含空格(第一个非“word”字符)。你知道吗
相关问题 更多 >
编程相关推荐