我想在特定模式之后和特定模式之前的文件中找到一个单词。 以下是文件中的内容:
emplace_back
所以,我想单独获取单词print("Hi", "My name is", "Tej");
并将其存储到数组中。类似地,我有许多这样的文件具有与上面类似的模式但具有不同的名称,所以我想将所有这些名称推送到数组中。即我想要来自模式Tej
之后和模式print("Hi", "My name is", "
之前的文件中的文字。
有时,逗号后面的空格不见了。
我编写了打开文件的脚本,并将文件句柄传递给函数,以搜索模式之前和之后的单词。该函数的代码如下:
");
我知道正则表达式不起作用,但我不确定如何找到我需要的单词。任何提供的帮助表示赞赏。 谢谢
答案 0 :(得分:-1)
这是我将如何做到的:
sub search {
my $file_handle = shift;
while (<$file_handle>) {
if (/print\("Hi", ?"My name is", ?"([^"]+)"\);/) {
push @array, $1;
}
}
}
我转义了正则表达式中的特殊字符(在本例中为(
和)
),我使用"([^"]+)"
来匹配引号内的所有非引号。
空格后面的问号使空格的存在可选。