一個字符串的一部分我的HTML代碼,看起來像這樣:使用Perl刪除所有空格用Perl的正則表達式
<a href="TheWholeWorld">
:
<a href="The Whole World">
和想使它看起來像這樣。我該怎麼做呢?謝謝!
一個字符串的一部分我的HTML代碼,看起來像這樣:使用Perl刪除所有空格用Perl的正則表達式
<a href="TheWholeWorld">
:
<a href="The Whole World">
和想使它看起來像這樣。我該怎麼做呢?謝謝!
短的代碼片段
$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片段解析器,因爲它更容易在長期運行維護
$html = '<a href="The Whole World">';
$html =~ s/(?<=href=")([^"]+)/ $1 =~ s!\s+!!gr /e;
print $html;
此作品修改後的文字href="
直到以下"
。
通過第二次替換修改文本以從中刪除每個空格。
這使用Perl替換命令的r
修飾符,該修飾符僅在更高版本的Perl中可用。如果你不支持Perl的版本,那麼請使用以下代碼:
$html =~ s/(?<=href=")([^"]+)/ my $text = $1; $text =~ s!\s+!!g; $text /e;
你可以直接在HTML本身中更改它嗎?我不明白爲什麼要使用perl !!!!!你想在運行時改變嗎? – Hariharan
我反覆處理電子郵件,我需要手動替換它們幾十次,所以如果可能的話,我會盡量自動化。 –