我有一个特定格式的文本文件..
!c_xyz|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyz
asdasda........................................................
asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
!c_abc|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyz...
我需要一个正则表达式来使用“查找和替换 - Visual Studio”重新格式化此文件。 Desc字段值已溢出到下一行。我需要将它们移回实际线。最终字符串应该像
!c_xyz|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyzsdasda.........asdddddd..
!c_abc|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyz...
我需要一个RE“desc =”,然后是下一个!符号
答案 0 :(得分:1)
如@ X3074861X的评论中所述,您可以使用Notepad ++。
输入:
!c_xyz|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyz
asdasda........................................................
asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
!c_abc|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyz...
对于查找和替换,请选择模式为Regular expression
,其选项如下:
Find what
:\r\n[^!]
将Replace with
留空。
输出:
!c_xyz|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyzsdasda........................................................sddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
!c_abc|crby=112|crdate=12jun11|mdby=112|mddate=12jun11|Desc=xyz...
截图:
答案 1 :(得分:1)
找到Desc=([^\|\r\n]+)[\r\n](([^!\r\n][^\r\n]+[\r\n])*)
,替换为Desc=\1\2
并重复,直到每一行以!
开头(您可以使用^[^!]
作为搜索expr进行测试,该搜索expr应该找不到任何内容)。
或者找到[\r\n]+
,替换为空字符串。此后找到!
,替换为\r\n!
。这个建议有两个缺点。它会暂时生成非常长的行,您的编辑(特别是vs)可能会或可能不会对包含!
的描述有错误或处理错误。
附录:
您的输入似乎是固定格式,直到Desc
部分。如果确实如此,您可以使用备选#2,第1步,然后使用(!.{53}\|Desc=)
/ [\r\n]\1
进行搜索/替换运行。