我有这种情况。
| N / A
|开始新的流程
|测试
TEST1
TEST2
|你好
| < BR>
| < BR>
| http://google.com
''引号''
中的一些文字|使用一些网址
我的要求是获得所有|在连续的行中连同文本。有些文字有了新的一行。
这就是我想要使用正则表达式后的文本
| N / A
|开始新的流程
| test test1 test2
|你好
| < BR>
| < BR>
| http://google.com''引号中的一些文字''
|使用一些URL
我尝试了一些正则表达式,但我无法完美地完成它。有人能指点我这样做吗。
更新
我在Windows中这样做
答案 0 :(得分:1)
尝试用空格替换此模式:
[\r\n]+(?!\|)[ ]*
你没有指定,所以我使用.NET风格的正则表达式。
这可以通过替换任意数量的CR和/或LF字符,然后替换管道以外的其他内容,然后使用单个空格替换零个或多个空格。这有效地连接非管道起始行并添加它连接行的空间。
[ ]*
可以放在*
(没有括号),我只是想在表达式中明确地调出我的空格字符。
测试:
答案 1 :(得分:0)
这里重要的是你激活正则表达式引擎的“dotall”模式,以便。正在匹配换行符。但是你如何做到这一点取决于你的正则表达式引擎。
接下来就是使用.|* or .*|?
。第一个是贪婪的,将匹配到你的字符串中的最后一个“句子”,第二个是懒惰的,将匹配到你的字符串中的下一个“句子”。
另外检查一下,我希望这对你有帮助......
答案 2 :(得分:0)
有些人在遇到问题时会想“我知道,我会用 正则表达式。“现在他们有两个问题。
我建议不要使用正则表达式,因为我发现它们没有必要。
为什么不读取行的文件行,每次行以管道(|)开头时,将其添加为数据结构中的新条目,例如可调整大小的数组,以及不以管道开头的行,你改为将文本添加到数组中的最后一个条目?
例如,这可以解决问题(在Perl,YMMV中):foreach (@rawlines) {
push(@formattedlines,$_) if /^\|/;
$formattedlines[-1]="$formattedlines[-1]$_" if not /^|/;
}