我也遇到过这种情况。
| N/A<br>
| Start a new process<br>
| test
test1
test2<br>
| hello<br>
| < br><br>
| http://google.com
''Some text inside quotes''
| Use some URL
我的要求是|在文本沿着连续行中。某些文本有一个新行。
这就是我希望文本在使用正则表达式后的样子
| N/A<br>
| Start a new process<br>
| test test1 test2<br>
| hello<br>
| < br><br>
| < br><br>
| http://google.com ''Some text inside quotes''<br>
| Use some URL<br>
我尝试了一些正则表达式,但我无法完美地完成它。有人能告诉我怎么做吗。
我在Windows中执行此操作
3条答案
按热度按时间093gszye1#
尝试将此模式替换为空格:
您没有指定,所以我使用. NET风格的正则表达式。
其工作原理是用单个空格替换任意数量的CR和/或LF字符,后跟管道以外的字符,然后后跟零个或多个空格。这有效地连接了非管道开始的行,并在连接行的位置添加了空间。
[ ]*
可以写成*
(没有括号),我只是喜欢在表达式中显式调用空格字符。jmp7cifd2#
这里重要的是激活正则表达式引擎的“dotall”模式,这样。匹配换行符。但如何做到这一点取决于您的正则表达式引擎。
如果你使用
.|* or .*|?
。第一个是贪婪的,将匹配到字符串中的最后一个“句子”,第二个是懒惰的,将匹配到字符串中的下一个“句子”。也在这里面查一下,希望对你有帮助……5f0d552i3#
有些人在遇到问题时会想“我知道,我会用正则表达式。”
我建议不要用正则表达式来做这件事,因为我发现它们不是必需的。
为什么不一行一行地读取文件,并且每次该行确实以管道(|),你将它作为一个新的条目添加到一个数据结构中,比如一个可调整大小的数组,而对于不是以管道开头的行,你将文本添加到数组的最后一个条目中?
例如,这将完成以下操作(在Perl,YMMV中):