Perl:如何逐行搜索文本文件以查找特定模式?

时间:2015-08-06 22:57:53

标签: regex perl

我想在文本文件的每一行的开头找到一个字符串 STRING 。到目前为止,我有:




  open(FILEHANDLE,“sample.txt”)

 while(my $ line =< $ FILEHANDLE>){
 if($ line = ~PATTERN){
 doSomething的();
 }
}
  




我的问题是:我为 PATTERN 做了什么让我的代码工作?我知道 STRING 将位于文本文件的每一行的开头, STRING 后面将跟有空格。 STRING 可能会改变,因此它必须在变量中而不是硬编码。





到目前为止,我只能想到Python的方法这个:




  PATTERN = r“^”+ re.escape(STRING)+ r“\ s”
如果是re.search(PATTERN,线):
 doSomething();
  




如何将其翻译为Perl?





另外,如果这是错误的Perl语法,请告诉我,以便我可以解决它。




2 个答案:

答案 0 :(得分:4)

你几乎就在那里,只需要知道mem是字符串连接,而不是.。并且quotemeta()会进行字符串转义。

+

答案 1 :(得分:1)

您正在寻找的是quotemeta

data = dset['sea_ice_cover'][:]  # data is a numpy array
data[data < 0] = -1