首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从冒号向后捕获文本,直到出现逗号或行首

从冒号向后捕获文本,直到出现逗号或行首
EN

Stack Overflow用户
提问于 2014-09-18 20:14:58
回答 2查看 86关注 0票数 3

我需要创建一个javascript正则表达式来捕获css选择器。

下面是一些示例:

代码语言:javascript
运行
复制
*, ::before, ::after // do not capture anything
::before // do not capture anything
.class1, .class2:before,.class3::after // capture .class2 and .class3
.class4::before // capture .class4
.class-5::before // capture .class-5
.class__6::after // capture .class__6
.class--7 > .child::after // capture .class--7 > .child
#id1 + .something:after // capture #id1 + .something
#id2[attribute-one="1"] + .class8:before // capture #id2[attribute-one="1"] + .class8

这是我目前的情况/([.#\-+~>\[\]\"\'=\w ]+)(?=:?:)/g.这是不理想的,因为我基本上必须白名单特殊的字符。

相反,我宁愿做这样的事情:

  1. 找到冒号
  2. 向后走,直到我按下逗号或行首

忽略独白空间的奖励点数,所以

代码语言:javascript
运行
复制
*, ::before

不会捕获逗号后面的空格。

注意:这本质上是这个https://stackoverflow.com/questions/25918914/capture-word-before-a-specific-character的一个更复杂的版本

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-18 20:46:52

您可以使用这个regex:

代码语言:javascript
运行
复制
(?:^|,)([^:,\n]+):

抓取捕获的组#1为您的匹配。

RegEx演示

票数 0
EN

Stack Overflow用户

发布于 2014-09-18 20:25:26

代码语言:javascript
运行
复制
(?!,\s*:),([^,:]+):|^(?!\s*:)([^,:]+):

尝试this.It提供所有的matches.See演示。

http://regex101.com/r/pD5sV6/1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25921559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档