[英]Replace characters in an HTML document that match a regex, except those inside tags
[英]Replace characters inside a RegEx match
我想匹配任何文本內的某些行,並在匹配項內進行匹配,我想經常替換某個字符,因為它發生了。 示范文本:
任何文本及其“更多”“更多”。 不要在這里替換引號
CatchThis(此處無引號,“任何其他文本”,“等等,依此類推……”)
catchthat(“其他一些文字”,“或更少”)
“之間”的一些文本
CatchAnything(“甚至更多”,“更多”,沒有引號,“文字牆”)
更多(“ text”“”“)和引號之后...
現在,我想用一個井號替換圓括號內的每個引號。 期望的結果:
任何文本及其“更多”“更多”。 不要在這里替換引號
CatchThis(此處無引號,#其他文字#,#等,依此類推...#)
catchthat(#some other text#,#orless#)
“之間”的一些文本
CatchAnything(#even more#,#andmore#,那里沒有引號,#text of text#)
更多(“ text”“”“)和引號之后...
匹配線條很容易。 這是我的模式:
(?i)Catch(?:This|That|Anything)[ \t]*\(.+\)
不幸的是,我不知道如何匹配每個報價並替換它...
匹配2個不同定界符內某個模式的所有出現的常見方法是使用基於\\G
錨的正則表達式。
(?i)(?:\G(?!\A)|Catch(?:This|That|Anything)\s*\()[^()"]*\K"
參見regex演示 。
說明 :
(?i)
-不區分大小寫的修飾符 (?:
-與2個替代方案匹配的非捕獲組
\\G(?!\\A)
-上一次成功匹配之后在字符串中的位置(由於\\G
也匹配字符串的開頭,因此(?!\\A)
必須排除這種可能性) |
- 要么 Catch(?:This|That|Anything)
-跟隨有This
或That
或Anything
Catch
\\s*
-0+空格 \\(
-文字(
符號 )
-非捕獲組的結尾 [^()"]*
- (
, )
和"
\\K
匹配重置運算符 "
-雙引號。 您是否真的需要在正則表達式中替換它? 如果您的正則表達式找到了所需的內容,則可以替換找到的字符串中的字符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.