【问题标题】:regex for multiple strings多个字符串的正则表达式
【发布时间】:2015-01-11 09:48:44
【问题描述】:

我尝试在一个文件中匹配两个字符串并仅返回该行。

第一个字符串将始终匹配我正在寻找的内容,但不完全匹配。

例子:

我可能在 Matchthisstring 中寻找 Matcht,所以我匹配但不是整个字符串。

字符串 1 可能出现在字符串 2 之前或之后,并且可能以大写或小写字母开头。

例子:

我可能实际上正在寻找但实际上有。

但它在一起,我有 Matchthisstring.Actually 或actually.Matchthisstring 或 Matchthisstring.someotherjunkIdon'tcareabout.actually 之类的任何其他组合。

我在同时使用两个搜索字符串和让雷鬼音乐正常工作时遇到问题。

下面是一些有效的代码示例:

 my @matches;
   while (<$in_fh>) {
     #push @matches, $_ if / \Q$wanted\E .* \Q$prefix\E /x;
     #push @matches, $_ if / \Q^*(.*)$wanted\s*(.*)\E .* \Q^*(.*)$prefix\s*(.*)\E /x;
     push @matches, $_ if / \Q$wanted\E /x;
   }

我真正想做的是被注释掉的其他选项之一。我认为我没有正确地将两个搜索合并为一个字符串。

提前感谢您的帮助。

【问题讨论】:

  • 不确定你在问什么。请提供一些具有预期输出的示例
  • $wanted 中有什么内容? $prefix 中有什么内容?
  • 我愿意学习而不是寻求帮助。我正在编写脚本并在遇到困难时寻求帮助,而不是让人们为我编写脚本。您认为我应该使用哪些好书或在线资源以便我变得更好?我只是想变得更好和学习。
  • @tialin:正如我所说,你忽略了所有的建议,并且似乎正在修补代码部分,希望某些东西可以工作。没有人愿意提供更多建议而被忽略。在 Internet 上搜索 Perl 教程非常简单。如果您在一两年内每天阅读并正确回答 Stack Overflow 上的几个 Perl 问题,那么您可以称自己精通。
  • @Borodin 嗯,这比上一个问题要好得多,因为它的重点是合理的。不一定专注于问题的正确方面,但仍然——更好。感谢您提供指向较早线程的指针。

标签: regex string perl


【解决方案1】:

听起来像你想要的

push @matches, $_ if /\Q$wanted\E/ and /\Q$prefix\E/;

演示:

$ perl -ne 'use strict; use warnings; use vars qw($wanted $prefix @matches);
>    BEGIN {  $wanted = "/donate"; $prefix = "lghfound"; }
>    push @matches, $_ if /\Q$wanted\E/ and /\Q$prefix\E/; print @matches' <<'HERE'
> http://www.google.com/donate
> http://lghfoundation.com/pages/donate.html
> http://example.com
> HERE
http://lghfoundation.com/pages/donate.html
http://lghfoundation.com/pages/donate.html

【讨论】:

  • 我仍然遇到的问题是这个正则表达式“push (at)matches, $_ if / \Q$prefix\E .* \Q$wanted\E /x;”仍然没有从我的文件“lghfoundation.com/donate/john-hansen.aspx”中提取这一行;其中 $wanted="/donate" 和 $prefix="lghfound" & 我试图找出原因。正则表达式“push @matches, $_ if /\Q$wanted\E/ and /\Q$prefix\E/;”似乎也不起作用。
  • 为我工作。更新了示例。
猜你喜欢
  • 2011-02-17
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
  • 2019-09-07
  • 2014-10-11
  • 1970-01-01
相关资源
最近更新 更多