使用正则表达式提取标识符之间的字符串

时间:2019-07-17 06:39:39

标签: regex

我需要提取标识符([[1]] some text [[\1]])之间的字符串,并且每个标识符都必须以相同的数值开头和结尾。

到目前为止,我已经找到了此解决方案: /(?<= [[([[0-9])]])(。*?)(?= [[\([0-9])]])/ gm

Example

输入正确的文本,但是我需要标识开始和结束标识符之间的数字。

[[1]] abc [[\1]] [[2]] pqr [[\2]] xyz [[3]] rst [[\3]] [[5]] ijk [[\5]]

预期结果: [" abc ", " pqr ", " rst ", "ijk" ]

xyz 应该被忽略,因为它不在标识符之间。

我已经更新了正则表达式,使其看起来像这样: Updated Example 请让我知道它是否正确。

2 个答案:

答案 0 :(得分:0)

您可以尝试以下正则表达式模式:

\[\[(\d+)\]\](.*?)\[\[\\1\]\]

标签内包含的内容可以作为 second 捕获组使用。

Demo

\[\[(\d+)\]\]   match an opening tag e.g. [[1]], and capture the number
(.*?)           match and capture all content inside the tags
\[\[\\1\]\]     match a closing tag (\1 represents the number)

答案 1 :(得分:0)

此正则表达式可以解决问题:

\[\[(\d)\]\]\s([^\]]*)\s\[\[\\\1]\]

您使用\2

来获取字符串

测试here