我正在使用一个名为AntConc的语料库语言学工具,在这个工具中,你有一个文档,其中每个单词都被标记为词性(名词、形容词等),你可以使用特定的命令来提取匹配项。例如,如果我正在寻找一个名词(标记为NN),我将使用*_NN
,它将找到文档中的每个名词。你知道吗
我需要将我的*_TAG
语法翻译成python regex,我不知道该怎么做。例如,我有一个短语:*_PP$ *_NN *_DT *_JJ *_NN
(这翻译成所有格代词,名词,限定词,形容词,名词;它会发现像“她的声音完全重复”)的标签格式。你知道吗
怎样才能把这样的东西改成正则表达式呢?现在,我只接受那些基本的东西。稍后我会担心如何做“或”和“如果这然后这个”等等。你知道吗
如果您需要有关标签的更多信息,请尝试搜索POS标签爪,这将为您提供一个列表。你知道吗
非常感谢你的帮助!你知道吗
所以我做了一些研究,发现this PDF file描述了嵌入标记和非嵌入标记的概念。您正在查找嵌入的标记。如果我是对的,输入应该是这样的,对吗?你知道吗
只有在更大的文本体中,你不知道实际的单词,你只知道
_XX
标记。你知道吗在正则表达式中,必须比
*
更具体。在*
中,您需要的是一个或多个作为单词一部分的字符(字母,但也可能包含连字符?)。所以这个名词是这样的:这意味着word characters ^{} 的character class ^{} ,连字符} ,后跟
-
,repeated one or more times ^{_NN
。你知道吗对于所有格代词,它有一个
$
,在正则表达式中有一个特殊的意义,如果你想要字符而不是它的特殊意义,你需要用前面的\
来转义它,就像这样:最后,您要考虑单词之间允许使用哪些字符。可以是空白,比如空格、制表符和输入,也就是
\s+
。也可以是“任何不是单词字符的字符”,以允许句点、逗号、引号、冒号等\W+
(注意大写W
与小写\w
相反)。你知道吗加起来等于:
Debuggex Demo
要做到“未知数量的单词”你可以这样做:
因此,匹配单词
[\w-]+
的部分和介于\W+
之间的部分被包装成一个非捕获组(?:...)
,并且该组被称为与*
一起出现0次或更多次,但是与?
一起出现的次数尽可能少,以避免greediness。您可以看到它here并删除或添加一个X以查看它是否仍然匹配。你知道吗相关问题 更多 >
编程相关推荐