regex - 如何捕获字符串中的前 N 个单词?使用正则表达式?
问题描述
我有一个看起来像这样的正则表达式(所有单词字符加上下划线和破折号):
/[\w\-_]+/gm
和一个看起来像这样的输入:
This is a cat. It is fat. That is a dog. It looks like a log. Fat-cat dog_log
它正确匹配所有单词,跳过空格和标点符号。但我只想得到前三个字。我以为我可以添加{1,3}
到正则表达式的末尾并得到这个结果,但这会产生错误。我使用的正则表达式测试器可以在这里找到:https ://regex101.com/r/Ec1IAH/1
解决方案
试试这个正则表达式:
^(?:[\w-]+[^\w-]+){2}[\w-]+
解释:
^
- 匹配行首(?:[\w-]+[^\w-]+){2}
[\w-]+
- 匹配 1+ 个单词字符或-
[^\w-]*
- 匹配出现 1 次以上的非单词字符或非-
ie 的所有字符,匹配除字母、数字、下划线和-
{2}
- 重复以上 2 步 2 次
[\w-]+
- 匹配 1+ 个单词字符或-
推荐阅读
- reactjs - 无法在提供程序文件中获取 redux 状态
- sql - SQL中的聚合——如何加速查询
- python - SAWarning:对于延迟加载的属性“Similarity.tag1”,使用 uselist=False 返回多行
- r - 格式未应用于数据框
- google-app-engine - 在 GCP 上用于数据管道的最佳服务是什么
- javascript - 我想在单击正方形时显示一个列表,如何在 javascript 中执行此操作?
- typescript - 为什么打字稿将特定字符串视为类属性中的字符串?
- python - 在神经风格转移代码中获取“NaN”
- javascript - 带有单个花括号表达式的 Vue v-bind
- java - RecyclerView:不同按钮的不同ViewType