我有这两行文本,我想使用正则表达式进行操作并替换:
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));
但是我不知道如何使用替代...
一些注意事项:
在Obj\.(\w*).*\n
之后,总是有一个等号,可以在其前后加上一个空格。
在第二个$1
之前可以有任何字符,包括FieldNameA
Obj.
等...
这可以实现吗?
答案 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.
文字\)
-一个)
字符。