我想从输入字符串中获取某个“帧”中的子字符串。我们来看一个例子。
我有以下输入文件:
Method(M123426)(123)
Method(M123427)(Zeno)
Method(M123428)(true)
Method(M123429)(444)
我想从第一次出现时获取值:M123426,123。 所以框架就是这样:“METHOD()()”,我需要括号中的值。
我为此创建了一个正则表达式:
Match method = Regex.Match(inputString, @"METHOD(.+\)\(.+\)");
但这会导致匹配帧本身,而我只需要值。我怎样才能做到这一点?
答案 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)
仅匹配第一行的开头。