如何从带有正则表达式的帧中定义的输入字符串中获取字符串

时间:2014-10-20 13:00:31

标签: c# regex

我想从输入字符串中获取某个“帧”中的子字符串。我们来看一个例子。

我有以下输入文件:

Method(M123426)(123)
Method(M123427)(Zeno)
Method(M123428)(true)
Method(M123429)(444)

我想从第一次出现时获取值:M123426,123。 所以框架就是这样:“METHOD()()”,我需要括号中的值。

我为此创建了一个正则表达式:

Match method = Regex.Match(inputString, @"METHOD(.+\)\(.+\)");

但这会导致匹配帧本身,而我只需要值。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:2)

试试这个:

^Method\((.*?)\)\((.*?)\)

Regexr:http://regexr.com/39ot8

请务必启用Singleline模式。

您需要拉出第一个和第二个捕获组以获取所需信息。

答案 1 :(得分:1)

这应该有效:

@"Method\((\w+)\)\((\w+)\)"

答案 2 :(得分:1)

您应该escape the parentheses获得适当的匹配,并且只能从第一次出现时使用^行开始anchor来获得匹配:

string pattern = @"^Method\((.+)\)\((.+)\)";

答案 3 :(得分:0)

使用以下正则表达式并从组索引1和2中获取值。并且还打开不区分大小写的模式以执行不区分大小写的匹配。

@"(?is)^METHOD\(([^()]*)\)\(([^()]*)\)"

它应该选择第一种方法,因为DOTALL模式^中的(?s)仅匹配第一行的开头。

DEMO