0

我有如下所示的 html 代码:

<a href="The Whole World">

并想让它看起来像这样:

<a href="TheWholeWorld">

使用 Perl。我该怎么做呢?谢谢!

4

2 回答 2

1
$html = '<a href="The Whole World">';
$html =~ s/(?<=href=")([^"]+)/ $1 =~ s!\s+!!gr /e;
print $html;

这可以通过将文本更改为以下内容href="来实现"
文本被第二次替换修改以删除其中的每个空格。

这使用了rPerl 替换命令的修饰符,该修饰符仅在更高版本的 Perl 中可用。如果您没有支持它的 Perl 版本,请使用以下命令:

$html =~ s/(?<=href=")([^"]+)/ my $text = $1; $text =~ s!\s+!!g; $text /e;
于 2013-07-23T08:37:52.490 回答
0

短代码片段

$a='<a href="the whole world">';
($c=$a)=~s/("\S+|\S+|")\s*/$1/g;
print $c;

正则表达式如何工作:

s/("\S+|\S+|")\s*/$1/g;
      ^ ^  ^      ^   ^  ^
      + +  +      +   +  +-- global flag, apply repeatedly
      | |  |      |   +-- substitute in the first capture group
      | |  |      +-- white space, but outside of the capture group
      | |  +-- | alternative operator
      | +-- \S+ match any non zero amount of non white space
      +-- start capturing group

所以它会找到里面的非空白空间"并将其放入捕获组中

每个单词之间的空格没有进入捕获组

这种情况反复发生,捕获组被复制到结果中,但空白不是

最好在 xml 片段上使用解析器,因为从长远来看更容易维护

于 2013-07-23T08:14:32.483 回答