![]() |
1
3
正如其他人指出的,当您一次读取一行输入文件时,多行regex永远不会工作。
这是Perl“触发器/触发器”运算符的完美用法(
更新: 将显示移到子例程中以使主循环更清晰。 |
![]() |
2
3
由于文件是逐行读取的,因此跨越多行的所需短语永远无法匹配。 解决这一问题的一个基本方法是为问答区域设置标志。因为您有非常清楚的标记来输入和离开这些区域,所以代码非常简单
(我浓缩了
此代码对输入文件做了一些合理的假设。我需要标记以行首(可能有空格),但允许后面有更多的文本。如果你想确保他们是在线上唯一的东西
说明输入有一个Q/A。如果它变为多个Q/A,那么一旦应答端如此低,就在循环中移动打印。
这个问题的印刷品很好,所以我不在这里重复。如果有机会打印HTML以外的格式,则清除前导和尾随空格、多个空格和换行符中的字符串。 在同一个变量上重复的测试可能会导致寻找一个case类型构造,在perl中是这样的。 switch . 然而,这仍然是一个实验性的特性,它以一种
(文档!).此外,它还可能 智能匹配 涉及,这是很难描述,广泛理解为打破其目前的形式,并一定要改变。所以我建议继续使用级联if-elsif语句(在这种方法中)。 |
![]() |
3
0
您的方法包括逐行读取文件,但是您的regex试图在问题/答案的开始和结束之间获取多行。文件中的任何行都不会与这样的多行regex匹配,最终将以未初始化结束。
将整个文本文件读取为字符串,然后将其拆分为问答块并修剪内容(如果需要)是有意义的:
输出:
如果在一个文件中有多个问答对,则可以循环
|
![]() |
Manny · 如何比较Perl中的字符串? 3 年前 |
![]() |
BioRod · 我不能用Perl打印键和值 3 年前 |
![]() |
user17227456 · Perl CLI代码无法追加字符串行 3 年前 |
![]() |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 3 年前 |
![]() |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 3 年前 |
![]() |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 3 年前 |
![]() |
Pranay Nanda · 使用regex解析许可证文件 7 年前 |