javascript - 具有多个返回对象的复杂正则表达式可选搜索
问题描述
我试图让以下内容在某些条件下进行搜索。总会有给定的文件名,其他是可选的。
[[File:HumanMaleDiagram.png|right|300px|thumb|A diagram of a male human.]]
第二项可以是 [left, right, center] 或可选,大小可选(px 或 %),thumb 可选,末尾的 alt 文本可选。
我用过:
var imageFinder = /\|\s*\[\[File\:([\w\-\_\. ]+)\|*(?=[right|left|center]*)\|*(?=[\w]*px)\|*(?=[thumb]*)\|*(?=[\w\.\s]*)\]\]/gi
退回 $1...$5
所以我在管道上使用了前瞻的“?=”和“*”,但没有找到它。
仅在过去几天愤怒地使用正则表达式。我所有其他人都在工作(他们比这小),但我们将不胜感激地获得一些帮助。
在 JavaScript 中执行此操作。
感谢任何可以提供帮助的人。
解决方案
您可以使每个部分都是可选的,因此您不需要使用前瞻。
我建议使用命名的捕获组(但这不是必需的)。
\[\[File:[^|]+(?:\|(?<align>left|right|center))?(?:\|(?<size>\d+(?:px|%)))?(?:\|(?<thumb>thumb))?(?:\|(?<alt>[^|]+))?\]\]
在 regex101 上看到这个
推荐阅读
- python - tensorflow-gpu 2.1.0 和 CUDA 10.1 看不到我的 GPU
- c# - 使用 .NetCore 3.1 运行修剪过的自包含单个可执行文件 - 无法加载文件或程序集“Microsoft.Management.Infrastructure
- php - 如何反转数组然后获取值大于 0 的第一项
- java - 如何在 Spring Boot 中将“file:/product/config/”或““classpath:/product/config/””解析为绝对路径?
- powershell - 如何确认用户名 否则允许输入自定义用户名
- java - Swagger for java - 必填字段阻止执行
- c# - Ball Breaker Game - 在某些反弹后,球被卡在桨上 - Unity
- postgresql - Spring Data JPA 并转换为 Postgres 自定义域
- imodeljs - IModelReadRpcInterface.openForRead() 不可用
- r - 使用 MASS 中的 boxcox 时,未为此 S4 类定义 $ 运算符