正则表达式将在具有特定开头的每一行中列出n和n + 1引号之间的值

时间:2017-05-04 09:45:26

标签: c# regex

我正在尝试创建一个将执行以下任务的正则表达式:

  1. 检查线的开头是否为例如"东西"
  2. 转到
  3. 行中的第n个引号
  4. 获取第n个引号和n + 1引号之间的值。
  5. 转到下一行
  6. 转到第1步。
  7. 我试图做这项工作,但老实说,我有点不完全理解语法,我基本上试图将其他人写的两个或更多的表达式加入到一个。

    为了让我更好地理解语法,我真的很感激为了解决每一步的问题。

    非常感谢!

2 个答案:

答案 0 :(得分:0)

试试这个正则表达式(对于n == 3):

^something.*$\n.*$(?:[^"]*"[^"]*){2}"([^"]+)".*$\n.*$

该值位于第一个捕获组中。注意/gm修饰符。

演示:https://regex101.com/r/amQSgo/1

答案 1 :(得分:0)

您可以检查每一行:

^something([^"]*"){n}([^"]*)"

也许不完整......

它包含的内容:

  • 首先^:行首
  • something:请求的字符开始序列
  • ([^"]*"){n} n次一些(可能为空)文本后跟引号
  • ([^"]*)第n个引号后面的文字,直到(不包括)第n + 1个引号
  • "第n + 1个引号
  • ...不关心其余部分的内容。

分别在每行文本中使用它,并检查表达式是否产生匹配。如果匹配,则最后一个匹配组是您在nn+1引号之间请求的序列。您还可以生成一个命名匹配组,以使生活更轻松......