查找文本#2的正则表达式是什么? 模式是它是c之后第一次出现“z =”。我想要的文字是z =之后的其余部分。我在.Net中使用正则表达式
A
x
b
x
z=text#1
A
x
c
x
z=text#2
答案 0 :(得分:2)
.*c.*z=([^\n]*).*
您需要启用.
个匹配换行符(RegexOptions.SingleLine
以下)。
以下是My Regex Tester生成的一些C#代码:
using System;
using System.Text.RegularExpressions;
namespace myapp
{
class Class1
{
static void Main(string[] args)
{
String sourcestring = "source string to match with pattern";
Regex re = new Regex(@".*c.*z=([^\n]*).*",RegexOptions.Singleline);
MatchCollection mc = re.Matches(sourcestring);
int mIdx=0;
foreach (Match m in mc)
{
for (int gIdx = 0; gIdx < m.Groups.Count; gIdx++)
{
Console.WriteLine("[{0}][{1}] = {2}", mIdx, re.GetGroupNames()[gIdx], m.Groups[gIdx].Value);
}
mIdx++;
}
}
}
}
答案 1 :(得分:2)
要在z=whatever
之后捕获第一个 c
,您需要使用不情愿的量词:
String source = @"A
x
b
x
z=text#1
A
x
c
x
z=text#2
A
x
d
x
z=text#3";
Match m = Regex.Match(source, @"c.*?z=([^\n]*)", RegexOptions.Singleline);
if (m.Success)
{
Console.WriteLine(m.Groups[1].Value);
}
其他答案中给出的正则表达式捕获z=whatever
之后的 last c
。由于z=whatever
之后只有一个c
,因此无意中获得了预期结果。
答案 2 :(得分:1)
c.+z=(.+)\n
您必须设置正则表达式选项,以便点(。)匹配所有内容