正则表达式:正确匹配带引号/括号/括号的表达式

时间:2017-10-20 05:24:46

标签: c# regex visual-studio

我需要帮助才能正确分离和匹配与主表达式中包含的模式匹配的表达式。

我正在使用C#的Regex ...我需要使用" Regex.Matches"函数以获得结果。

实际上我需要正确匹配一些包含引号,括号或括号的表达式。 这些是一些例子:

  1. 示例1:我在引号内有3个表达式。我希望将3个表达式分开。

    • 主要表达 - > "' WORD1' ' WORD2' ' WORD3'"
    • 在伪代码中预期 - >新收藏([' word1',' word2',' word3'])
  2. 示例2:我有3个表达式,如 - >关键词:单词。我希望将3个表达式分开。

    • 主要表达 - > " KEY1:WORD1 KEY2:WORD2 KEY3:WORD3"
    • 在伪代码中预期 - >新收藏([KEY1:WORD1,KEY2:WORD2,KEY3:WORD3])
  3. 示例3:我有3个表达式,如 - >重点:'字' 。我希望将3个表达式分开。

    • 主要表达 - > " KEY1:' WORD1' KEY2:' WORD2' KEY3:' WORD3'"
    • 在伪代码中预期 - >新收藏([KEY1:' WORD1',KEY2:' WORD2',KEY3:' WORD3'])
  4. 示例4:我有3个表达式,如 - >关键:[字]。我希望将3个表达式分开。

    • 主要表达 - > " KEY1:[WORD1] KEY2:[WORD2] KEY3:[WORD3]"
    • 在伪代码中预期 - >新收藏([KEY1:[WORD1] KEY2:[WORD2] KEY3:[WORD3]])
  5. KEYx可以是任何东西 WORDx也可以是任何东西

    这是我正在使用的代码,其中输入变量是主要表达式:

        private List<String> getSplitSimpleExpressions(string input)
        {
            string pattern = @".+:\[.+?\]|.+:\'.+\'*$|.+:.+|\'.+\'"
            List<String> Expressions = Regex.Matches(input, pattern).Cast<Match>().Select(x => x.Value).ToList();            
            return Expressions;
        }
    

    使用此功能,我只得到上述例子的一个匹配。

    这是因为模式(比如说&#39;。+ \&#39;)使用最后一个引号(&#39; word1 ....... word3&#39;)而不是每个表达式的第一个引号(&#39; word1&#39;,&#39; word2&#39;,&#39; word3&#39;)

    示例3也是如此:

    • 表达:&#34; KEY1:&#39; WORD1&#39; KEY2:&#39; WORD2&#39; KEY3:&#39; WORD3&#39;&#34;
    • 模式:。+:\&#39;。+ \&#39;
    • 结果(只有1个结果):KEY1:&#39; WORD1 ....... WORD3&#39;

    与示例4相同,但使用右括号:

    • 表达:&#34; KEY1:[WORD1] KEY2:[WORD2] KEY3:[WORD3]&#34;
    • 模式:。+:[。+?]
    • 结果(只有1个结果):KEY1:[WORD1 ....... WORD3]

    我可以使用空格分割Main表达式,但我应该省略引号内的空格。

    所以我需要将这些表达式与第一个右引号或第一个右括号等匹配 我应该解决这个问题?你怎么看? 提前致谢

0 个答案:

没有答案