隔离子串非贪心?

时间:2017-03-02 15:16:45

标签: javascript regex non-greedy

给定字符串,例如:

foo/**hello**/baré 
foo/crazy/**hello**/baré 
**hello**/crazy/baré

对于每一行,如何通过JS隔离hello**之间的文字)?(正则表达式?搜索)

(每行所需的输出为hello

到目前为止,我在那里失败了:.*?\*\*(.*?)\*\*.*? => $1给了我:

hello/baré 
hello/baré 
hello/crazy/baré

2 个答案:

答案 0 :(得分:3)

您可以使用与*:

之外的任何字符匹配的表达式

const inputs = [
  'foo/**hello**/baré',
  'foo/crazy/**hello**/baré',
  '**hello**/crazy/baré'
];

inputs.forEach(input => {
  const matches = input.match(/.*\*\*([^*]+)\*\*.*/);
  console.log(matches[1]);
});

答案 1 :(得分:2)

单词,只需使用\w

\*+(\w+)\*+

Demo

如果您想要专门2 *,请执行

\*{2}(\w+)\*{2}

如果您有句子或段落或混合字符,请搜索起始和结束分隔符以外的字符:

\*{2}([^*]+)\*{2}