Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按条件捕获多个字符串_Javascript_Node.js_Regex - Fatal编程技术网

Javascript 按条件捕获多个字符串

Javascript 按条件捕获多个字符串,javascript,node.js,regex,Javascript,Node.js,Regex,我正在尝试解析这段文本。第一步是捕捉[feat]和换行符之间的所有内容。第二步更好的办法是抓住所有的壮举并按显示的日期进行分组。文本存储在变量中。以下是一个例子: #[1.0.0]-2019-06-28 [feat]-完成生成pdf重构 ## [1.0.1] - 2019-07-04 [fix]固定生成地址 [fix]固定授权打印 [fix]固定便笺组件 ## [1.0.2] - 2019-07-05 [feat]添加视图作为生产响应 [专长]添加组件 [fix]固定认股权证 我试过使用[(f

我正在尝试解析这段文本。第一步是捕捉
[feat]
和换行符之间的所有内容。第二步更好的办法是抓住所有的壮举并按显示的日期进行分组。文本存储在变量中。以下是一个例子:

#[1.0.0]-2019-06-28
[feat]-完成生成pdf重构
## [1.0.1] - 2019-07-04
[fix]固定生成地址
[fix]固定授权打印
[fix]固定便笺组件
## [1.0.2] - 2019-07-05
[feat]添加视图作为生产响应
[专长]添加组件
[fix]固定认股权证
我试过使用
[(feat])(.*)/n
str.match
,但我遗漏了一些东西

我想得到的结果是: [“固定生成地址”、“添加视图作为生产响应”、“添加组件”]

或者更好地按日期分组,您可以使用

/\[feat]\W*(.+)/g
看。注意:如果在
[feat]
和需要提取的数据之间只能有空格和连字符,则可以将模式精确为

/\[feat][\s-]*(.+)/g
        ^^^^^^
见和:

详细信息

  • \[feat]
    -a
    [feat]
    子字符串
  • \W*
    -0个或多个非单词字符
  • [\s-]*
    -0或更多空格或/和连字符
  • (.+)
    -第1组:除换行符以外的任何0个或更多字符
JS演示:

var s=“##[1.0.0]-2019-06-28\n[feat]-完成生成pdf重构\n#[1.0.1]-2019-07-04\n[fix]固定生成地址\n\n[fix]固定凭证打印\n\n[fix]固定票据组件\n\n\n#[1.0.2]-2019-07-05\n[feat]添加视图作为生产响应\n\n\n[feat]添加组件\n\n\n\fix];
变量rx=/\[feat]\W*(.+)/g,m,res=[];
while(m=rx.exec){
res.push(m[1]);
}
控制台日志(res)您可以使用

/\[feat]\W*(.+)/g
看。注意:如果在
[feat]
和需要提取的数据之间只能有空格和连字符,则可以将模式精确为

/\[feat][\s-]*(.+)/g
        ^^^^^^
见和:

详细信息

  • \[feat]
    -a
    [feat]
    子字符串
  • \W*
    -0个或多个非单词字符
  • [\s-]*
    -0或更多空格或/和连字符
  • (.+)
    -第1组:除换行符以外的任何0个或更多字符
JS演示:

var s=“##[1.0.0]-2019-06-28\n[feat]-完成生成pdf重构\n#[1.0.1]-2019-07-04\n[fix]固定生成地址\n\n[fix]固定凭证打印\n\n[fix]固定票据组件\n\n\n#[1.0.2]-2019-07-05\n[feat]添加视图作为生产响应\n\n\n[feat]添加组件\n\n\n\fix];
变量rx=/\[feat]\W*(.+)/g,m,res=[];
while(m=rx.exec){
res.push(m[1]);
}

控制台日志(res)
应该是正则表达式吗?请使用接收有关其含义的解释。换行符是
\n
,而不是
/n
[(feat]
表示
f
e
a
t
)中的一个字符。错误的
是一个语法错误。您到底是如何尝试
str match
?您使用过(hit
F12
)如果这些字符串是独立的,请使用
str.match(/\[feat]\W*(.+)/)[1]
,如果这些字符串是独立的。您可以只使用
/\[feat]\W*(.+)/g
regex,并在循环中使用
re.exec(str)
。我已经尝试过使用regex101,这就是我得到它的方法。对regex来说非常陌生。您需要
[“完整生成pdf构件”吗,“添加视图作为生产响应”、“添加组件”]
事实上?请参见@WiktorStribiżew Yes!:)是否
[(专长](.*))/n
应该是正则表达式?请使用以接收有关其含义的解释。换行符是
\n
,而不是
/n
[(专长]
表示其中一个
字符(
f
e
a
,或
t
。杂散的
是一个语法错误。您是如何尝试
str.match
?您是否使用了(点击
F12
)并读取了任何错误?如果这些字符串是独立的,请使用
str match(/\[feat]\W*(.+)/[1]
。您可以只使用
/\[feat]\W]*(.+)/g
regex与
re.exec(str)
在一个循环中。我曾经尝试过使用regex101,这就是我得到它的原因。对regex来说非常陌生。你需要
[“完成生成pdf重构”,“添加视图作为生产响应”,“添加组件”]
吗?事实上,请参阅@WiktorStribiżew是的!)