正则表达式精确匹配单词

3

我需要匹配行中的单词。例如:

The blue bird is dancing.
Yellow card is drawn
The day is perfect rainy
blue bird is eating

这四行文本保存在名为 l2 的文件中。
我想要匹配蓝色的鸟、黄色的卡片、日期,每次打印出匹配的单词后再打印该行。
y=regexp(l2,('^(?=.*blue bird)|(?=.*day)|(?=.*Yellow card)$'));

这是它的工作方式吗?我无法获得结果。

sprintf('[%s]',y,l2);

你使用什么编程语言? - Willem Van Onsem
MATLAB 我们可以在MATLAB中使用(\b黄牌\b)|(\b天\b)吗?我认为\b..\b可以提取出精确的单词匹配。 - Samiya Qureshi
2个回答

2

MATLAB的正则表达式引擎不使用\b作为单词边界锚点而使用\<\>

因此,您的正则表达式应为

y = regexp(l2, '^(?=.*\<(?:blue bird|day|Yellow card)\>).*', 'lineanchors');

假设l2是一个多行字符串。

如果我选择打印它,它会给我以下错误sprintf('[%s][%s]',y,l2)警告:%s格式说明符的参数必须是char类型(字符串)。 - Samiya Qureshi
regexp 返回一个数组,其中包含匹配项的起始位置。你有阅读我提供的文档吗?如果你想要返回匹配项,你需要使用 'match' 选项。但是当然,你仍然会得到一个数组,而不是单个字符串。 - Tim Pietzcker

1
尝试使用这个正则表达式。
(?:blue bird|yellow card|day)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接