簡體   English   中英

替換正則表達式匹配中的字符

[英]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) -跟隨有ThisThatAnything Catch
    • \\s* -0+空格
    • \\( -文字(符號
  • ) -非捕獲組的結尾
  • [^()"]* - ()"
  • \\K匹配重置運算符
  • " -雙引號。

您是否真的需要在正則表達式中替換它? 如果您的正則表達式找到了所需的內容,則可以替換找到的字符串中的字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM