JavaScript 正则表达式 : repeating non-capturing group

标签 javascript regex

我正在研究正则表达式,但我无法让它按我想要的方式工作。

字符串,2 个示例:

- /download?standard=yes&file=France_new-aquitaine_deux-sevres_europe_2.obf.zip

- /download?standard=yes&file=Afghanistan_asia_2.obf.zip

我想提取以下部分:

- country (France)  
- region (new-aquitaine)  
- department (deux-sèvres)  
- worldZone (europe)  

我的 WIP 正则表达式:
/.*file=(?:(.*?)_{1})*?(?:\d\.obf\.zip)$/gi

也许有一种递归方式来处理它,我不知道。

你能帮助或指导我吗? 谢谢。

解决方法:

/.*file=([^_]+)_(?:([^_]+)_)??(?:([^_]+)_)??([^ _]+)_2\.obf\.zip$/g

最佳答案

一个选项可能是使用捕获组,如果您还想匹配第二个字符串的国家/地区和地区,您可以使用可选的非捕获组 (?:...) 将该部分设为可选?

各部分之间用下划线分隔。您可以使用否定字符类 ([^_]+) 匹配除下划线之外的任何字符来捕获其间的部分。

.*file=([^_]+)_([^_]+)(?:_([^_]+)_([^_]+))?_\d+\.obf\.zip$

Regex demo

关于JavaScript 正则表达式 : repeating non-capturing group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60853480/

相关文章:

javascript - Angularjs 单击会触发 2 次?

javascript - 通过 javascript 将规则数组的字符串逻辑转换为可用的 HTML

javascript - 获取 https 响应的正文

html - ios 中的正则表达式提取 href url 并丢弃 anchor 标记的其余部分?

java - 多线程 Java 正则表达式

javascript - 监视解构的 require 方法

javascript - 插入前 Firebase 检查数据是否存在

Java正则表达式,用于字符串中任意位置的恰好5位数字

R中的正则表达式匹配方括号中的字符串

ruby-on-rails - 正则表达式检查用户名中连续出现的句点符号