【问题标题】:VB.Net - Use regular expression to identify new lines between double quotesVB.Net - 使用正则表达式识别双引号之间的新行
【发布时间】:2013-11-10 08:49:41
【问题描述】:

我有以下字符串值:

1A-2A-3A-"Comment line 1
Comment line 2
Comment line A1
Comment line A2"-BREAK1
1B-2B-3B-"Comment line 3
Comment line 4"-BREAK2
1C-2C-3C-4C-BREAK3
1D-2D-3D-4D-BREAK4

我想在 vb.net 中使用正则表达式,得到以下结果:

1A-2A-3A-"Comment line 1|Comment line 2|Comment line A1|Comment line A2"-BREAK1
1B-2B-3B-"Comment line 3|Comment line 4"-BREAK2
1C-2C-3C-4C-BREAK3
1D-2D-3D-4D-BREAK4

基本上规则是删除双引号之间的任何新行。

欢迎任何帮助!

【问题讨论】:

  • 正则表达式(以及任何其他类型的“小长度代码”方法)的基本要求是获得清晰的模式。您输入的模式是什么?在包含单词“line”的行之后删除新行?您也可以发布您尝试过的内容吗?
  • 您的输入也不响应任何 VB.NET 接受的格式。是不是明白第一个代码块的每一行后面都有一个Environment.NewLine?
  • @varocarbas 模式是在双引号之间找到文本时删除换行符
  • 是的,你的第二组例子更清楚了。在任何情况下,您都应该以 VB 可接受的格式提供它(并展示了您的尝试)。现在你有一个回答者,向他解释你的条件。

标签: .net regex vb.net


【解决方案1】:

我想出了下一个解决方案:

Dim vInput = <xml>1A-2A-3A-"Comment line 1
Comment line 2
Comment line A1
Comment line A2"-BREAK1
1B-2B-3B-"Comment line 3
Comment line 4"-BREAK2
1C-2C-3C-4C-BREAK3
1D-2D-3D-4D-BREAK4</xml>.Value

Dim vRegExMatch = System.Text.RegularExpressions.Regex.Matches(vInput, """[^""\\]*(?:\\.[^""\\]*)*""|'[^'\\]*(?:\\.[^'\\]*)*'")
Dim vSpecialChar As Char = "|" '"†"

For Each vMatch In vRegExMatch
    vInput = vInput.Replace(CStr(vMatch.Value), CStr(vMatch.Value).Replace(vbLf, vSpecialChar))
Next

结果:

1A-2A-3A-"Comment line 1|Comment line 2|Comment line A1|Comment line A2"-BREAK1
1B-2B-3B-"Comment line 3|Comment line 4"-BREAK2
1C-2C-3C-4C-BREAK3
1D-2D-3D-4D-BREAK4

希望对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多