我希望能够替换换行符(实际上是删除),但只有它们存在于引号内。
下面的字符串应该删除以粗体显示的换行符,因为它们在引号内:
例如 - 这是目标字符串“而我 \ r \ n 想要删除某些”行“中断 \ r \ n ”但不是其他人\ r \ n。我能这样做吗?
请参阅下面的图片了解正则表达式模式。我可以隔离包含换行符的引号。
现在,我希望能够在这些匹配项中找到模式\r\n
并替换它们,同时将\r\n
留在引号之外。
答案 0 :(得分:2)
您可以在C#中使用可变宽度环视:
(?<="[^"]*)\\r\\n(?=[^"]*")
请参阅RegexStorm.net上的demo( regex101不支持.NET正则表达式)。
如果您想删除实际的空格,可以使用
(?<="[^"]*)[\r\n]+(?=[^"]*")
示例代码:
var rx = new Regex(@"(?<=""[^""]*)[\r\n]+(?=[^""]*"")");
var removed = rx.Replace("This is the target string \"and I \r\n want some\" line \"breaks \r\n\" to be removed but not others \r\n. Can I do that?", string.Empty);
输出(仅剩1个换行符):
This is the target string "and I want some" line "breaks " to be removed but not others
. Can I do that?