用正则表达式替换另一个字符串

时间:2018-11-22 11:19:26

标签: regex

我有这两行文本,我想使用正则表达式进行操作并替换:

directory_entry

第一个.path()上有一个字段名称,因此在这种情况下,它们是Obj.FieldNameA = Reader.GetEnumFromInt32<ClassName>(QueryGenerator,nameof(Obj.)); Obj.FieldNameB=Reader.GetTrimmedStringOrNull(QueryGenerator,nameof(Obj.)); Obj.

我想将这些值附加到同一行上找到的第二个FieldNameA上,因此文本应变为:

FieldNameB

我已经测试了这个非常简单(和错误)的正则表达式: Obj.

替换为Obj.FieldNameA = Reader.GetEnumFromInt32<ClassName>(QueryGenerator,nameof(Obj.FieldNameA)); Obj.FieldNameB=Reader.GetTrimmedStringOrNull(QueryGenerator,nameof(Obj.FieldNameB));

但是我不知道如何使用替代...

Sample code here

一些注意事项:
Obj\.(\w*).*\n之后,总是有一个等号,可以在其前后加上一个空格。 在第二个$1之前可以有任何字符,包括FieldNameA Obj.等...

这可以实现吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

查找(Obj\.(\w+).*\(Obj\.)\)
替换$1$2)

请参见regex demo

您也可以在正则表达式的开头添加^以仅在行/字符串的开头进行匹配。

详细信息

  • ^-字符串的开头
  • (Obj\.(\w+).*\(Obj\.)-组1(替换为$1):
    • Obj\.-Obj.文字
    • (\w+)-第2组($2):1个或更多单词字符
    • .*-尽可能多的0+字符,而不是换行符(您可以使用.*?来匹配 second Obj.行,您当前的输入只有两个,第二个输入更靠近行尾,因此.*会更好)
    • \(Obj\.-(Obj.文字
  • \)-一个)字符。