如何在Python上使用正则表达式标记文本而不忽略其括号

如何在Python上使用正则表达式标记文本而不忽略其括号,python,regex,nltk,tokenize,Python,Regex,Nltk,Tokenize,如何在不忽略括号和()的情况下使用正则表达式标记文本 例如: 我想把这句话标记化: I don't like to eat Cici's food (it is true). 我使用了这个正则表达式: pattern = r'''(?x)([A-Z]\.)+|\w+(-\w+)*|\$?\d+(\.\d+)?%?|\.\.\.|[][.,;"'?():-_`]''' tokenize_list = nltk.regexp_tokenize(sentence, pattern) 但输出与我想要

如何在不忽略括号和()的情况下使用正则表达式标记文本

例如:

我想把这句话标记化:

I don't like to eat Cici's food (it is true).
我使用了这个正则表达式:

pattern = r'''(?x)([A-Z]\.)+|\w+(-\w+)*|\$?\d+(\.\d+)?%?|\.\.\.|[][.,;"'?():-_`]'''
tokenize_list = nltk.regexp_tokenize(sentence, pattern)
但输出与我想要的不一样:

I
don
'
t
like
to
eat
Cici
'
s
food
(
it
is
true
)
.
<>我想要的输出应该是这样的,这是考虑括号,而不是标记(和一个词后,也不标记)和一个词之前:< /P>
I
don't
like
to
eat
Cici's
food
(it
is
true)
.

有人能帮我吗?谢谢。

您可以使用如下正则表达式:

(['()\w]+|\.)

匹配信息

MATCH 1
1.  [0-1]   `I`
MATCH 2
1.  [2-7]   `don't`
MATCH 3
1.  [8-12]  `like`
MATCH 4
1.  [13-15] `to`
MATCH 5
1.  [16-19] `eat`
MATCH 6
1.  [20-26] `Cici's`
MATCH 7
1.  [27-31] `food`
MATCH 8
1.  [32-35] `(it`
MATCH 9
1.  [36-38] `is`
MATCH 10
1.  [39-44] `true)`
MATCH 11
1.  [44-45] `.`

除了希望
成为一个单独的标记之外,
句子.split()
可能要简单得多。不过,我认为开始括号和结束括号也应该是单独的标记。谢谢你的意见@chepner