regex - 在正则表达式捕获组中,排除一个单词
问题描述
我有这种类型的网址:
https://example.com/en/app/893245
https://example.com/ru/app/wq23245
https://example.com/app/8984245
我只想提取和之间的com
单词app
https://example.com/en/app/893245 -> en
https://example.com/ru/app/wq23245 -> ru
https://example.com/app/8984245 ->
我试图从捕获组中排除应用程序,但我不知道该怎么做,除了这样:
.*com\/((?!app).*)\/app
是否有可能这样但不包括被捕获的单词 app?example\.com\/(\w+|?!app)\/
Rubular 链接:https ://rubular.com/r/NnojSgQK7EuelE
解决方案
如果您需要一个普通的正则表达式,您可以使用lookarounds:
/(?<=example\.com\/)\w+(?=\/app)/
或者,在 URL 的上下文中可能更好:
/(?<=example\.com\/)[^\/]+(?=\/app)/
请参阅Rubular 演示。
在 Ruby中,您可以使用
strs = ['https://example.com/en/app/893245','https://example.com/ru/app/wq23245','https://example.com/app/8984245']
strs.each { |s|
p s[/example\.com\/(\w+)\/app/, 1]
}
# => ["en", "ru", nil]
推荐阅读
- kotlin - Kotlin 中学班建设者
- java - 为什么spring-data-redis ZSetOperations范围操作返回Set而不是SortedSet?
- c++ - Number 和 Shape 超类中的 vtable 错误
- kubernetes - 在本地 Kubernetes 集群上安装 OpenFaas
- loadrunner - 负载运行器中的巨大响应时间
- aframe - 如何在 Aframe 中使模型 glft 居中?
- firebase - firebase 实时数据库分片规则
- vue.js - 如何在 datepicker vuetify 中添加加载?
- python - 如何使用 Python pandas-datareader 0.8 从 Alpha Vantage 正确调用数据
- python - 如何在 swig 中使用 numpy.i?