用于在关键字之前识别名称的正则表达式结构

时间:2018-04-20 20:11:46

标签: regex

我正在尝试编写一个表达式来识别知识工作室(IBM Watson)中句子中的站点位置。

目前我有

[^a-z][^\s]*(.*?)\s+station|Station

但它给我带来了一些问题: 1.它正在提取整条线而不仅仅是车站(例如"请在天使站和#34见面;提取而不仅仅是" Angel Station")。 我似乎无法找到如何在表达式中编写异常。例如,我通常希望在站之前找到非小写(大写,标题或数字)的所有单词,但如果是,然后我希望它继续识别单词(例如海布里和伊斯灵顿站,而不仅仅是选择伊斯灵顿站)。

请告知我做错了什么。谢谢!

1 个答案:

答案 0 :(得分:0)

我认为答案是IBM Watson Knowledge Studio特定的 - 您必须在正则表达式结构之外定义特定数量的单词标记 - 默认情况下,这限制为5,因此需要增加以正确地拾取所有单词。我把它增加到10,这对我来说很好。

就以下正确的结构而言:

\b[A-Z][A-Za-z']*(?:\s+(?:and|[A-Z][A-Za-z']*))*\s+[Ss]tation

注意 - 我需要包含'符号以确保所有电台都被接听(例如King's Cross Station)。

Oak Lane Station仍然没有选择,但这似乎是一个错误,而不是Regex的一个问题所以已经向IBM Watson团队报告了。