我有一本书的几个部分,其中包含以下格式的内容:
含义 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