【发布时间】:2017-01-07 04:49:20
【问题描述】:
我正在尝试创建一个重复捕获两个不同捕获组的正则表达式。我的项目中有文本指针,例如 |:framework.urls.http:|我需要能够创建一个正则表达式来通过这些文本指针查找字符串中何时有 url。它们总是以 |:framework.urls 开头。something:|
它们可能针对其他文本指针,或者它们可能针对任何不是空格的字符,因为我们不允许文本中的 URL 中有任何空格。这是我尝试的解决方案的正则表达式:http://regexr.com/3e4pb
/(?:(\|:framework\.urls\.[^:]+:\|)+([^\s\|]*))+/g
在这个示例字符串上:
|:framework.urls.something:|/hey|:framework.urls.something-else:|.|:framework.urls.com:|/hey-不包括
我想要/期望的输出共有 8 个组...
- |:framework.urls.something:|
- /嘿
- |:framework.urls.something-else:|
- (无)
- |:framework.urls.after:|
- .
- |:framework.urls.com:|
- /嘿-那里
末尾的字符串(“不包含”)不会包含在正则表达式中。有没有简单的方法来实现这一点?我目前的实现似乎只抓住了最后两组(“|:framework.urls.com:|”和“/hey-there”)
【问题讨论】:
-
如果您的模式只有 2 个组,您怎么能期望有 8 个组?你是说 8 场比赛吗?
-
@WiktorStribiżew 除以
|和计数... -
我希望正则表达式末尾的 + 会重复分组,但情况可能并非如此
-
@user1771700:在任何正则表达式风格中都不会出现这种情况。那么,您需要 1-8 个值的列表吗?与
|拆分。 -
用户,如果你把 plus 放在这里:
)+)/比你有 3 个不错的组。
标签: javascript regex