突出显示句子中的单词

突出显示句子中的单词

我有一本书的几个部分,其中包含以下格式的内容:

含义 1:- 欣赏:了解某事、某事的价值,心存感激。尊重:想着某人,送上最美好的祝愿。减轻:痛苦、不愉快等。

含义 2:- 行为:行动。交往:建立联系,与某人共度时光。恢复活力:看起来更年轻,勉强:不愿意。

我正在寻找一个可以匹配冒号前的单词的 grep。欣赏、尊重、减轻、行动、振兴、不情愿就我而言。

有些单词在冒号前有空格,而有些单词没有空格。有些单词是连续的,例如尊重、减轻。冒号前后没有空格。

我编写的代码不起作用。

\w*(?= ?:)

我不明白我做错了什么。

答案1

grep不支持前瞻,但如果您使用-e选项,它将起作用:

grep -e '\w+(?= ?:)' file

如果要匹配用空格分隔的多个单词,请使用:

grep -e '\w+(?: \w+)*(?= ?:)' file

解释:

\w+        # 1 or more word character (i.e. [a-zA-Z0-9_])
(?: \w+)*  # non capture group, a space and 1 or more word character, may appear 0 or more times
(?= ?:)    # positive lookahead, an optional space followed by a colon

相关内容