正则表达式匹配单行或多行中的任何单词[\ r \ n]

时间:2015-12-14 12:54:01

标签: c# .net regex

我们需要搜索单词“test.property”并将“test1.field”替换为单行或多行。

单词边界不会忽略\r\n,它可以找到:

test.\r\nproperty 

如何忽略正则表达式C#中单词之间的\r\n

前:

输入来源:

int c = test\r\n.Property\r\n["Test"];

需要输出:

int c = test1\r\n.Field\r\n["Test"];

我目前的输出:

int c =test1.Field.["test"]

模式:

正则表达式我正在使用:

 Regex regex = new Regex(@"\btest\s*\.\s*property\b", RegexOptions.IgnoreCase | RegexOptions.Singleline);
 replacementLine = regex.Replace(sourceLine, "test1.field");

我们只需要替换字符串而不是换行符。请提出你的建议?

2 个答案:

答案 0 :(得分:1)

试试这个:

Regex regex = new Regex(@"(?'g1'\btest\b\.\W*)(?'g3'\bproperty\b)", RegexOptions.IgnoreCase | RegexOptions.Singleline);
var replacementLine = regex.Replace(sourceLine, "${g1}Field");

答案 1 :(得分:0)

你需要一个lookbehind,它也接受可能的空格。这是一个忽略第一个的例子,改变了第二个和第三个发现。

var data = @"testNO.property['LeaveThis'];
test
.property
['Test'];

test.property['Test2'];";

var pattern = @"(?<=test[\r\n\s]*\.)property";

Regex.Replace(data, pattern, "field")

替换结果

testNO.property['LeaveThis']; 
test
.field
['Test'];

test.field['Test2'];