我想从以下选项中选择word2
:
word2;word3
位于;
和行首之间的word2
,除非其间有=
。在这种情况下,我希望从=
开始,而不是像word2
from那样从行的开头开始
word1=word2;word3
我试过使用这个正则表达式
(?<=\=|^).*?(?=;)
从中选择word2
word2;word3
还包括来自word1=word2
的
word1=word2;word3
发布于 2019-05-28 01:27:58
应该有这么多选项,可能正则表达式在最后几个选项中。
但是,如果我们希望使用一个表达式来解决这个问题,让我们从一个简单的表达式开始,并探索其他选项,可能类似于:
(.+=)?(.+?);
或
(.+=)?(.+?)(?:;.+)
其中第二个捕获组有我们想要的word2
。
示例1
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(.+=)?(.+?);";
string input = @"word1=word2;word3
word2;word3";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
示例2
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(.+=)?(.+?)(?:;.+)";
string substitution = @"$2";
string input = @"word1=word2;word3
word2;word3";
RegexOptions options = RegexOptions.Multiline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}
https://stackoverflow.com/questions/56330173
复制相似问题