首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要正则表达式javascript中的第二组

我需要正则表达式javascript中的第二组
EN

Stack Overflow用户
提问于 2019-07-19 06:35:47
回答 2查看 73关注 0票数 1

我不知道如何得到第二组的字符串。现在我有完整的手表和第一组(不完全)(?:<p>)?@preview\((.*)\)(?:<\/p>)?

示例字符串:

代码语言:javascript
复制
@preview(example-component/example-component)
<p>@preview(example-component/example-component)</p>
@preview(example-component/example-component, title="sadad" text="asd")
@preview(example-component/example-component, title="sadad" text="asd" )

全场比赛:

代码语言:javascript
复制
@preview(example-component/example-component)

代码语言:javascript
复制
<p>@preview(example-component/example-component)</p>

代码语言:javascript
复制
@preview(example-component/example-component, title="sadad" text="asd")

第1组:

代码语言:javascript
复制
example-component/example-component

第2组:

代码语言:javascript
复制
title="sadad" text="asd"

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-19 06:44:31

您的表达式只有一个匹配组,它与()中的所有内容匹配,您只需要根据昏迷将其分成两个组。

代码语言:javascript
复制
(?:<p>)?@preview\((.*?)(?:,\s*(.*?))?\)(?:<\/p>)?

我把(.*)改成了(.*?)(?:,\s*(.*?))?

(.*?)非贪婪的所有选择器匹配一切,非贪婪使它停止在它发现的第一次昏迷

(?:,\s*(.*?))?非捕获组捕获前一组之后的所有内容,包括使用?将其标记为可选的,

(.*?)第二次非贪婪所有选择器捕获,之后的所有内容,不包括任何空格

https://regex101.com/r/c5qOFn/1

票数 1
EN

Stack Overflow用户

发布于 2019-07-19 06:39:46

你可以用

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

regex101.com上的演示

再详细一点,这是

代码语言:javascript
复制
\(              # match a "(" literally
    ([^,)]+)    # not a comma nor a ) -> group 1
    (?:,\s*     # a non-capturing group, followed by whitespaces
        ([^)]+) # not a ) -> group 2
    )?          # thw whole term is optional

JavaScript

代码语言:javascript
复制
let strings = ['@preview(example-component/example-component)',
'<p>@preview(example-component/example-component)</p>',
'@preview(example-component/example-component, title="sadad" text="asd")',
'@preview(example-component/example-component, title="sadad" text="asd" )'];

let rx = /\(([^,)]+)(?:,\s*([^)]+))?/;

strings.forEach(function(item) {
    let m = item.match(rx);
    if (typeof(m[2]) !== "undefined") {
        console.log(m[2]);
    }
});

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

https://stackoverflow.com/questions/57106805

复制
相关文章

相似问题

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