我有这行。
我希望包含“ Id”的每一行都以int替换“ string”。
不确定如何对此分组。
这是我的清单
我已经尝试过类似^(.*(string).*(Id).*)$
的操作,并替换为\1
或\2
public string ID {get; set}
public string IdSite {get; set}
public string IdParent {get; set}
public string IdPageType {get; set}
public string PageType {get; set}
public string IdTemplate {get; set}
public string TemplateName {get; set}
public string IdTemplateParent {get; set}
答案 0 :(得分:1)
您可以使用
(?i)^(\s*\w+\s+)string(\s+Id)
或者,如果ID
可能在单词内
(?i)^(\s*\w+\s+)string(\s+\w*Id)
^^^
替换为$1int$2
。请参见regex demo。参见regex graph:
详细信息
(?i)
-不区分大小写的内联选项^
-行的开头(或字符串,如果未在文本编辑器中使用,请在开头使用(?im)
而不是(?i)
)(\s*\w+\s+)
-第1组($1
):0+个空格,1 +个单词字符,1 +个空格string
-一个string
字(\s+Id)
-组2($2
):1个以上的空格和ID
字符串(如果在此组模式中使用\w*
,它将匹配0个以上的字符字符)。答案 1 :(得分:1)
您无需匹配整行或捕获任何内容。而是尝试:
string(?=.*?id)
positive lookahead断言id
在string
之后。同样,要以任何形式匹配id
,您都应启用不区分大小写的匹配,或使用[iI][dD]
代替id
。