我们需要搜索单词“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");
我们只需要替换字符串而不是换行符。请提出你的建议?
答案 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'];