正则表达式多次匹配

时间:2018-07-19 09:52:47

标签: regex regex-group regex-greedy

假设我具有以下字符串:<em>...</em>。 如何提取[P6]标记以及方括号内的信息,即我要提取以下内容:

<em>ddeeff</em>[P6]

<em>kkllmmnn</em>[P2]

<em>ssttuuww</em>from sklearn.preprocessing import Imputer imputer = Imputer(missing_values="NaN",strategy="mean", axis=0) imputer=imputer.fit(X[:,1:2]) X[:,1:2] =imputer.transform(X[:,1:2])

我已经尝试了很多模式,但是找不到上述所有匹配项(https://regex101.com/r/b64Wuv/1)。

有人知道如何使用正则表达式吗?

2 个答案:

答案 0 :(得分:1)

@San,您距离很近。模式需要更多,如下所示[C#中的示例]

        Regex regex = new Regex(@"(?<Ps>\[.*?]).+?<em>(?<ems>.*?)<\/em>");
        var input = "[P6]aabbcc<em>ddeeff</em>gghhiijj<em>kkllmmnn</em>oopp[P2]qqrr<em>ssttuuww</em>xxyyzz";
        var matches = regex.Matches(input);
        foreach (Match match in matches)
        {
            if (match.Success)
            {
                Console.WriteLine($"{match.Groups["Ps"].Value} {match.Groups["ems"].Value}");
            }
        }

答案 1 :(得分:0)

我认为您必须使用2个正则表达式:

第一个正则表达式-匹配字符串:

Match 1: [P6]aabbcc<em>ddeeff</em>gghhiijj<em>kkllmmnn</em>oopp
Match 2: [P2]qqrr<em>ssttuuww</em>xxyyzz

使用\[[^[]+example

第二个正则表达式-匹配ems

Match 1: <em>ddeeff</em>
Match 2: <em>kkllmmnn</em>

使用<em>([^<]+?)<\/em>example