正则表达式,选择其他内容的一部分文本

mag*_*nes 7 javascript c# regex

我对下一个任务有点无能为力.我希望选择"它在标签内但不在标签之外,即在另一个选择内的选择"之间的文本.

我有下一个标签:<| 和|>我只想选择一个文本,如果它在"和标签之间.

<| blah blah blah" 应该被选中 "未被选中" 选择它 "|>"没有被选中"

我想到了一些事情

(\<\|)(\").*?(\")(\|\>)   
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

nic*_*ael 6

我已经让它使用两个正则表达式正确匹配.

var input = '<|a "b"|>c "d"ef<|"g"h "i"|>"j"k l';
var output=input.match(/<\|(.*?)\|>/g)
   .map(function(x){return x.match(/"(.*?)"/g)})
alert(output)
Run Code Online (Sandbox Code Playgroud)

如您所见,正确匹配"b","g","i".

原则:

  1. 找到<|和之间的所有文本匹配|>
  2. 对于第一步中的每个匹配,找到两个引号之间的文本匹配.

(使用来自链接问题的第二个答案的正则表达式)


Seb*_*ann 4

这将在单个正则表达式中完成这项工作:

(?<=<\|[^>]*)"[^"]*"

除了nicael的评论之外:输入字符串可能没有正确标记。这将有助于:

(?<=<\|((?!\|>).)*)"[^"]*"

如果您需要将其与 JavaScript 一起使用:

(?=("[^"]*"[^"]*)*$)"[^"]*"(?=((?!<\|).)*\|>)