假设我有以下字符串:
string input = "Hello world\n" +
"Hello foobar world\n" +
"Hello foo world\n";
我有一个regex模式(由我正在编写的工具的用户指定)"foobar"
。
我想返回input
与表达式匹配的每一行的整行foobar
。因此,在此示例中,输出应为Hello foobar world
。
如果模式是"foo"
,我想返回:
你好foobar世界
你好foo词
这可能吗?
我的代码是
string pattern = "foobar";
Regex r = new Regex(pattern)
foreach (Match m in r.Matches(input))
{
Console.WriteLine(m.Value);
}
运行此命令将输出:
foobar
而不是:
你好foobar世界
如果是,string pattern = "foo";
则输出为:
foo
foo
而不是:
你好foobar世界
你好foobar世界
我也尝试过:
// ...
Console.WriteLine(m.Result("$_")); // $_ is replacement string for whole input
// ...
但这会导致input
字符串中的每个匹配项全部匹配(模式为时foo
):
你好世界
你好foobar世界
你好foo世界
你好世界
Hello foobar世界
你好foo世界
用。*和。*括住您的正则表达式词组,使它占据整行。
string pattern = ".*foobar.*";
Regex r = new Regex(pattern)
foreach (Match m in r.Matches(input))
{
Console.WriteLine(m.Value);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句