我正试图使用NLTK RegexpTokenizer:从转录本中删除正方形之间的所有文本
file = open('speakers.txt', 'r')
read_file = file.read()
tokenizer = nltk.RegexpTokenizer(r'[[(?:[^]|]*|)?([^]|]*)]]')
new_words = tokenizer.tokenize(read_file)
print(new_words)
[]
但是,此代码只会导致[]的输出。我需要更改什么才能使其覆盖[]及其内容?
您需要使用(?:[[^][]*]|s)+
正则表达式并添加gaps=True
参数,以使用方括号内的任何字符串进行拆分,方括号内没有内括号、嵌套括号和空白:
tokenizer = nltk.RegexpTokenizer(r'(?:[[^][]*]|s)+', gaps=True)
请参阅regex演示。
图案详细信息
(?:
-非捕获组的开始:[[^][]*]
-一个[
,然后是除[
和]
之外的零个或多个字符,然后是]
|
-或s
-空白
)+
-组中模式序列的一次或多次重复