以下字符串需要解析:
ford mustang,10,blue~~?bugatti veyron,13,black
我想用一个 换行符
替换掉 ~~?
使用 \n
进行替换只会添加字符串 "\n"
应该如何实现?
以下字符串需要解析:
ford mustang,10,blue~~?bugatti veyron,13,black
我想用一个 换行符
替换掉 ~~?
使用 \n
进行替换只会添加字符串 "\n"
应该如何实现?
请确保在“查找和替换”对话框中选择了“使用正则表达式”:
注意,对于 Visual Studio 2010,在 Visual Studio 生产力工具 的 “快速查找” 扩展中(截至 2011 年 7 月更新),这种方法不起作用;您需要使用完整的“查找和替换”对话框(使用 Ctrl+Shift+H
或 Edit --> Find and Replace --> Replace in Files
),并将范围更改为“当前文档”。
您还可以尝试在 "替换为" 框中使用 \x0d\x0a
并勾选 "使用正则表达式" 选项,在 Visual Studio 的查找/替换功能中获得回车+换行符。
使用 \n
(换行符)与使用 \x0a
相同。
如果您设置了使用正则表达式
标志,那么\n
字符将被转义。但请注意,您必须修改搜索术语以适应正则表达式的要求。在您的情况下,它应该像这样进行转义:\~\~\?
。
如果你想在使用正则表达式时避免转义搜索和替换字符串中的特殊字符,可以按照以下步骤操作:
请注意,即使你想手动选择第一个搜索和替换的匹配项,对于后面的三个步骤,也可以安全地使用“全部替换”。
例如,如果要替换此内容:
public IFoo SomeField { get { return this.SomeField; } }
就是这样:
public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }
你需要进行以下替换:
public IFoo SomeField { get { return this.SomeField; } }
→ XOXOXOXO
(正则表达式关闭)。XOXOXOXO
→ XOXOXOXO\nHUHUHUHU
(正则表达式开启)。XOXOXOXO
→ public IFoo Foo { get { return this.MyFoo; } }
(正则表达式关闭)。HUHUHUHU
→ public IFoo Bar { get { return this.MyBar; } }
(正则表达式关闭)。小小的警告:许多环境使用或需要"\r\n"而不仅仅是"\n"。我遇到了一个问题,就是在行末忘记输入"\r"导致我的正则表达式字符串无法与缺少不可见字符的字符串匹配,从而导致Visual Studio无法匹配我的正则表达式字符串。
因此,如果你正在进行查找或替换操作,请考虑"\r"。
有关 "\r"和 "\n" 的更多详细信息,请参见:https://dev59.com/3HA75IYBdhLWcg3wJFcL#3451192
\)
的转义字符。 - Cel?
字符需要转义,因为它表示前一个元素是可选的。因此,正确的“查找内容”文本是~~\?
,其中问号通过反斜杠进行转义。你给出的答案在示例文本中有效,因为它会贪婪地查找第二个波浪线并将其消耗掉,但是如果文本中任何地方存在单个波浪线,它也会不正确地被替换为换行符。 - ErikE