我是stackoverflow(我的第一篇文章)和正则表达式的新手。 目前我正在研究一个简单的脏应用程序,用ctor注入字段替换基类属性。 (我需要编辑大约400个文件)
应该找到这个:
ClassName(WiredObjectRegistry registry) : base(registry)
{
并替换为:
ClassName(IDependency paramName, ISecondDependency secondParam, ... )
{
_fieldName = paramName;
...
所以我需要用三个或更多新行替换两个旧行。
基本上我在想:
找到这个 - >
className + ctorParams +零或更多 空格+换行符+零或更多 空白+ {
替换为 - >
className + newCtorParams + newline + { 我的现场作业
我试过这个正则表达式.net
className + ctorParam + @"\w*" + "\r|\n" + @"\w*" + @"\{"
不能正确替换“{”和空格
替换的文件内容如下所示:
public CacheManager(ICallManager callManager, ITetraEventManager tetraEventManager, IConferenceManager conferenceManager, IAudioManager audioManager)
{
_callManager = callManager;
_tetraEventManager = tetraEventManager;
_conferenceManager = conferenceManager;
_audioManager = audioManager;
{
你可以帮助我: - |
大卫
答案 0 :(得分:0)
如果你正在翻译
className + ctorParams + zero or more whitespaces + newline + zero or more whitespaces + {
进入正则表达式
className + ctorParam + @"\w*" + "\r|\n" + @"\w*" + @"\{"
然后你犯了几个错误。
首先,空格的字符类是\s
。 \w
表示“字母数字字符”。
其次,"\r|\n"
将导致交替运算符|
将整个正则表达式分成两个备用部分(=“匹配|
之前的正则表达式或 |
之后的正则表达式)。在您的情况下,您根本不需要此位,因为\s
已经匹配空格,制表符和换行符。如果你想要一个与Unix,Mac或DOS换行符匹配的正则表达式,请使用\r?\n?
。
但是,正如评论所示,除非你告诉我们你真正想做什么,否则我们无法帮助你。