日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節書摘來自異步社區《正則表達式經典實例(第2版)》一書中的第2章,第2.19節,作者: 【美】Jan Goyvaerts , Steven Levithan著,更多章節內容可以訪問云棲社區“異步社區”公眾號查看

2.19 在替代文本中添加字面文本

問題描述
查找并把任何正則表達式匹配從字面上替換為這8個字符:$%*$11。

解決方案

$%\*$$1\1 替代文本流派:.NET、JavaScript \$%\\*\$1\\1 替代文本流派:Java $%\*\$1\\1 替代文本流派:PHP \$%\*\$1\\1 替代文本流派:Perl $%\*$1\\1 替代文本流派:Python、Ruby

討論
在替代文本中轉義字符的時機和方式
這個實例顯示了各種替代文本流派中使用的不同轉義規則。在替代文本中,你可能會需要轉義的兩個字符是美元符號($)和反斜杠()。而它們所使用的轉義字符也分別是美元符號和反斜杠。

在這個例子中的百分號(%)和星號(*)總是字面字符,然而一個前導的反斜杠也可能會被當作一個轉義字符,而不是一個字面上的反斜杠。?$1?和/或?1?是指向一個捕獲分組的反向引用。實例2.21中會講解哪些流派對于反向引用會使用哪種語法。這個題目對于我們講到的7種替代文本流派就存在了5種解決方案,這個事實也說明,關于替代文本的語法,根本就沒什么標準。

.NET和JavaScript
.NET和JavaScript總是把反斜杠當作一個字面字符。不需要再用另外一個反斜杠來對它進行轉義,否則就會在替換中得到兩個反斜杠。

單個出現的美元符號也是一個字面字符。只有當它們之后是數字、&、反引號、垂直引號、下劃線、加號或者另外一個美元符號的時候,才需要被轉義。要轉義美元符號,需要在它前面再加一個美元符號。

如果你覺得這樣會讀起來更加清晰,也可以選擇把所有的美元符號都用兩個來表示。下面這個解答也是同樣正確的:

$$%\*$$1\1 替代文本流派:.NET、JavaScript

.NET和XregExp還要求對后面跟著一個起始花括號的美元符號進行轉義。在.NET中,?${group}?是一個命名反向引用。標準JavaScript中沒有使用XRegExp庫時則不支持命名反向引用。

Java
在Java中,反斜杠用來在替代文本中轉義反斜杠和美元符號。所有字面的反斜杠和所有字面的美元符號都必須轉義。如果你不轉義它們,Java就會拋出一個異常。

PHP
PHP要求后面跟數字的反斜杠、后面跟數字或者起始花括號的美元符號,都需要使用反斜杠來進行轉義。

反斜杠也可以對另外一個反斜杠進行轉義。因此,你需要使用?\?來在替換文本中表示兩個字面上的反斜杠。所有其他的反斜杠都被認為是字面上的反斜杠。

Perl
Perl與其他替代文本流派都有些不同:它其實不能歸屬到任何一種替代文本流派。雖然其他編程語言都在查找和替換過程中使用一些特殊邏輯進行替換,比如?$1?,然而Perl中這只是正常的變量插值(interpolation)。在替代文本中,需要對所有字面上的美元符號用反斜杠進行轉義,就像在任意雙引號字符串中一樣。

一個例外是Perl同樣支持反向引用的?1?語法。因此,如果你需要字面上的反斜杠后跟數字,則需要對反斜杠進行轉義。為了避免反斜杠對美元符號進行轉義,因此需要對后面跟著美元符號的反斜杠進行轉義。

反斜杠也可以轉義另外一個反斜杠。因此,你需要使用?\?來在替換文本中表示兩個字面上的反斜杠。所有其他的反斜杠都視為字面上的反斜杠。

Python和Ruby
美元符號在Python和Ruby的替代文本中并不擁有特殊含義。如果反斜杠后面跟著一個會給反斜杠賦予特殊含義的字符,那么這個反斜杠就需要使用另外一個反斜杠進行轉義。

在Python中,?1?~?9?,以及?g<?會創建反向引用。因此這些反斜杠就需要進行轉義。

在Ruby中,你需要對后面跟著數字、&、反引號、垂直引號或者加號的反斜杠進行轉義。

在這兩種語言中,反斜杠都可以轉義另外一個反斜杠。因此,你需要使用?\?在替換文本中表示兩個字面上的反斜杠。所有其他的反斜杠都視為字面上的反斜杠。

更多關于字符串字面量的轉義規則
記住在本章中,我們關心的只是正則表達式和替代文本自身。下一章會講解編程語言和字符串字面量的內容。

上述替代文本作為實際字符串變量直接傳遞給replace()函數是可以正常工作的。換句話說,如果你在應用程序中給用戶提供一個文本框,讓用戶輸入替代文本,那么這些解決方案所給出的文本,正是用戶為了讓查找和替換正常工作所需要輸入的內容。如果你使用RegexBuddy或者另外一個正則測試工具來測試查找和替換命令,那么在這個實例中給出的替代文本也同樣會給出所期望的結果。

但是如果你把它們直接粘貼到源代碼中,在兩邊放上引號字符,那么這些同樣的替代文本并不能正常使用。編程語言中的字符串文本擁有它們自己的轉義規則,因此你需要在替代文本的轉義規則之上再遵循這些轉義規則才行。最終你所得到的很可能會是一堆混雜的反斜杠。

總結

以上是生活随笔為你收集整理的《正则表达式经典实例(第2版)》——2.19 在替代文本中添加字面文本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 穿扒开跪着折磨屁股视频 | 欧美夜夜爽| 男女透逼视频 | h片网站在线观看 | 日本少妇电影 | 日韩av二区 | 痴女扩张宫交脱垂重口小说 | 国产一区二区91 | 人与动物2免费观看完整版电影高清 | 国产97视频| 国产免费黄色网址 | 图片区视频区小说区 | 97色伦影院 | 免费在线观看av | 老外一级黄色片 | 欧美a在线视频 | 一区二区三区视频在线 | 国产干b| 天天操国产| 在线一区二区三区四区五区 | 少妇又色又紧又黄又刺激免费 | 成年人在线观看av | 精品视频一区二区三区 | 两个人做羞羞的视频 | 亚洲电影影音先锋 | 性久久久久| 欧美一区二区视频在线观看 | www.日韩欧美 | 美女无遮挡免费网站 | 欧美激情校园春色 | 欧美日韩一区二区三区不卡 | 91综合国产 | 国产精品一区二区av | 免费观看a视频 | 黄色大片久久 | 国产精品老熟女一区二区 | 日韩精品――中文字幕 | 在线免费视频一区二区 | 亚洲激情另类 | 日本久久99 | 明日花绮罗高潮无打码 | 日韩白浆 | 偷拍亚洲色图 | 色综合综合色 | 精品人妻无码在线 | 午夜视频www| 色网在线视频 | 麻豆av免费观看 | 久久影院一区二区 | 色乱码一区二区三区网站 | 91麻豆蜜桃| 懂色av一区二区三区免费观看 | 成人片在线看 | 久久av一区二区三 | 波多野结衣av一区二区全免费观看 | 一级片黑人 | 一二区在线视频 | 久久国产成人精品国产成人亚洲 | 国产精品视频一区二区在线观看 | 青青草免费在线 | 亚洲国产情侣 | 麻豆视频在线观看免费网站黄 | 精品国产av 无码一区二区三区 | 国产午夜一级 | 黄色三级网络 | 成人av网址在线 | 亚洲在线免费观看 | 成人观看视频 | 午夜91视频| 精品无码av一区二区三区四区 | 日韩avwww| 在线观看av不卡 | 黑人玩弄人妻一区二区绿帽子 | 亚洲精品国产精品乱码不99按摩 | 中文字幕第二页 | 催眠美妇肉奴系统 | 神马九九| 午夜伦理在线观看 | 女人的天堂av | 免费看一区二区三区 | 综合久久久久久久久久久 | 999视频 | 亚洲一| 久久精品6 | 亚洲精品免费在线播放 | 成人私密视频 | 日韩成人av免费在线观看 | www.亚洲一区二区三区 | 亚洲乱码国产乱码精品精 | 四川话毛片少妇免费看 | 久草网视频 | 插吧插吧综合网 | 国产精品午夜无码专区 | 日韩在线激情 | 粉嫩av一区二区三区天美传媒 | 国产女人爽到高潮a毛片 | 九色91av | 精品无码久久久久久国产 | av短片|