【发布时间】:2019-01-16 21:16:29
【问题描述】:
假设我有以下句子,
大家好,我的名字是 Dr. Who。我爱上了鱼指和蛋奶冻!!
我正在尝试使用正则表达式捕获标点符号(撇号和连字符除外),但我也想忽略某些单词。例如,我忽略了 Dr.,所以我不想捕获 .在博士这个词中。
理想情况下,正则表达式应该捕获括号之间的文本:
嗨(,)我的()名字()是()博士()谁(。)我()在()爱()和()鱼手指()和()奶油冻(!! )
请注意,我有一个 Python 列表,其中包含“博士”之类的词。我想忽略的。我还使用 string.punctuation 来获取要在正则表达式中使用的标点符号列表。我尝试过使用负前瞻,但它仍在捕捉“。”在博士。任何帮助表示赞赏!
【问题讨论】:
-
单词的位置是否相关?还是只是您要忽略的列表中的单词。首先删除要忽略的单词可能更容易。能举个完整的例子吗?
-
用正则表达式很难做到这一点。您想要一个匹配标点符号的正则表达式,但有一个否定的后视来忽略某些单词。但是负面的lookbehinds必须是固定的长度,你要忽略的词可能不都是相同的长度。
-
你有什么理由不使用 NLP 库?
-
我确实尝试过 ntlk 和 spacey,但这并不完全是我想要的。
-
你的意思是,“在括号之间?”比如,你想捕获
['Hi', 'my' ...]吗?