【问题标题】:Perl RegEx help for matching string [closed]匹配字符串的 Perl RegEx 帮助 [关闭]
【发布时间】:2014-05-07 07:38:16
【问题描述】:

我的字符串是

<p class="paraind">Leo Frobenius und Johan Huizinga sehen wiederum in der Analogie von Fest und Spiel „das Zusammengeben von strenger Bestimmtheit und echter Freiheit“.<a id="cein_fn29" href="einleitung.html#ein_fn29"><sup>29</sup></a> Die rituelle Regelhaftigkeit einerseits und die Absenz des gewöhnlichen Lebens andererseits unterstützen den antipodischen Gehalt dieser beiden Kulturphänomene, wobei das zweite Element auf den kompensatorischen Charakter des Festlichen verweist: Indem der Alltag im Festgeschehen periodisch durchbrochen wird, wird er erträglich, kann sich die „Stabilisierung eines Ichs“ formieren.<a id="cein_fn30" href="einleitung.html#ein_fn30"><sup>30</sup></a> „Das temporäre Herausgenommensein aus dem Zwang des Alltags“ scheint hier zugleich Voraussetzung und Indiz für das Festliche zu sein. In dieser U-Chronie, in dieser Nicht-Zeit, kommt es zur synchronen Präsenz von sehnsuchtsbehaftetem Wunschdenken und „gleichzeitigem Wissen um das grundsätzlich Prekäre“.<a id="cein_fn31" href="einleitung.html#ein_fn31"><sup>31</sup></a> Nur in den mannigfaltigen Spielarten des Festlichen ist die „vorübergehende Möglichkeit des Entkommens aus dem Normalen aus den Routinen und Zwängen“ gegeben.<a id="cein_fn32" href="einleitung.html#ein_fn32"><sup>32</sup></a></p>

我要找:

das grundsätzlich Prekäre“.书房 曼尼格法尔蒂根音乐节

注意:我是从变量中找到上面的字符串,所以如果里面有任何标签,我就无法匹配它。

请有人为此建议任何正则表达式

谢谢

【问题讨论】:

  • 您的意思是要提取所述标签之间的文本?
  • 我想在说标签之后提取文本,光辉
  • 您期望的输出是什么?你有没有尝试过?
  • 我想在上面的字符串中找到“das grundsätzlich Prekäre“. Nur in den mannigfaltigen Spielarten des Festlichen”,但我正在从变量中找到字符串和“ " 标签也出现在上面的匹配字符串中,所以我找不到这个
  • 问题已更新,请检查

标签: regex perl


【解决方案1】:
 use strict;
use warnings;
use HTML::TreeBuilder;

my $str = "Your HTML STRING";

# Now create a new tree to parse the HTML
my $tr = HTML::TreeBuilder->new_from_content($str);

# And now find all required tags ex li and create an array
my @lists = map { $_->content_list }  $tr->find_by_tag_name('li');

# And loop through the array printing values of tag.
foreach my $val (@lists) {
   print $val, "\n";
}

对所有其他标签做同样的事情。

始终建议您解析 HTML 而不是使用正则表达式进行提取。为此目的编写 100% 准确的正则表达式非常困难。

【讨论】:

  • 问题已更新,请检查
【解决方案2】:

如果你想要你提到的标签之间的文本。你可以这样做:

<tagyouwant>([^<]+)

你会得到匹配组中的文本。

例如,假设您想要:29、30、31、32,即&lt;sup&gt; 中的文本

所以你将把正则表达式写成:&lt;sup&gt;([^&lt;]+)

其他标签也是如此。

【讨论】:

  • 问题更新请检查
【解决方案3】:

我会用它来提取匹配项。使用某种 HTML 解析器会更好,但这可行。

效果很差,不要用于生产。

my $str = '<p class="paraind">Leo Frobenius und Johan Huizinga sehen wiederum in der Analogie von Fest und Spiel 
&#x201E;das Zusammengeben von strenger Bestimmtheit und echter Freiheit&#x201C;.
<a id="cein_fn29" href="einleitung.html#ein_fn29"><sup>29</sup></a>
 Die rituelle Regelhaftigkeit einerseits und die Absenz des gew&#x00F6;hnlichen Lebens andererseits unterst&#x00FC;tzen den antipodischen Gehalt dieser beiden Kulturph&#x00E4;nomene, wobei das zweite Element auf den kompensatorischen Charakter des Festlichen verweist: Indem der Alltag im Festgeschehen periodisch durchbrochen wird, wird er ertr&#x00E4;glich, kann sich die &#x201E;Stabilisierung eines Ichs&#x201C; formieren.<a id="cein_fn30" href="einleitung.html#ein_fn30"><sup>30</sup></a>
 &#x201E;Das tempor&#x00E4;re Herausgenommensein aus dem Zwang des Alltags&#x201C; scheint hier zugleich Voraussetzung und Indiz f&#x00FC;r das Festliche zu sein. In dieser U-Chronie, in dieser Nicht-Zeit, kommt es zur synchronen Pr&#x00E4;senz von sehnsuchtsbehaftetem Wunschdenken und &#x201E;gleichzeitigem Wissen um das grunds&#x00E4;tzlich Prek&#x00E4;re&#x201C;.<a id="cein_fn31" href="einleitung.html#ein_fn31"><sup>31</sup></a> Nur in den mannigfaltigen Spielarten des Festlichen ist die &#x201E;vor&#x00FC;bergehende M&#x00F6;glichkeit des Entkommens aus dem Normalen aus den Routinen und Zw&#x00E4;ngen&#x201C; gegeben.
 <a id="cein_fn32" href="einleitung.html#ein_fn32"><sup>32</sup></a></p>
 <span test>test text</span>
 ';
foreach my $tag (qw|i b span sup sub a|){
    my $s = $str;
    while ($s =~ s!<($tag)[^>]*>(.*?)</\1>!!is){
      print "Match: $1\ttext: $2\n";
    }
}

【讨论】:

  • 问题已更新,请检查
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2012-12-30
  • 2014-11-02
  • 2012-08-13
  • 2012-12-11
相关资源
最近更新 更多