我有如下所示的 html 代码:
<a href="The Whole World">
并想让它看起来像这样:
<a href="TheWholeWorld">
使用 Perl。我该怎么做呢?谢谢!
我有如下所示的 html 代码:
<a href="The Whole World">
并想让它看起来像这样:
<a href="TheWholeWorld">
使用 Perl。我该怎么做呢?谢谢!
$html = '<a href="The Whole World">';
$html =~ s/(?<=href=")([^"]+)/ $1 =~ s!\s+!!gr /e;
print $html;
这可以通过将文本更改为以下内容href="
来实现"
。
文本被第二次替换修改以删除其中的每个空格。
这使用了r
Perl 替换命令的修饰符,该修饰符仅在更高版本的 Perl 中可用。如果您没有支持它的 Perl 版本,请使用以下命令:
$html =~ s/(?<=href=")([^"]+)/ my $text = $1; $text =~ s!\s+!!g; $text /e;
短代码片段
$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 片段上使用解析器,因为从长远来看更容易维护