我想匹配包含在双括号中的任何单词,并添加一个额外的字符(使用Notepad++或EmEditor)。例如以下文本:
[[test]], look at my [[test|testing]] how it tests; I have a [[test]],you know a [[test, and more test]] and [[there's another test you know]]
应该成为
[[test한]], look at my [[test한|testing한]] how it tests; I have a [[test한]],you know a [[test한, and한 more한 test한]] and [[there한's한 another한 test한 you한 know한]]
到目前为止,我只能匹配完整的内容:\[\[.*?\]\]
1条答案
按热度按时间b91juud31#
严格的正则表达式版本将是
这个正则表达式只在
[[
和]]
中查找一个或多个单词字符。参见regex demo。不太严格的模式将是
请注意结尾处缺少的lookahead。这个正则表达式只在
[[
和]]
内部或[[
和字符串结尾之间找到一个或多个单词字符。看看这个regex demo。如果你的文本只包含平衡良好的方括号,你可以选择一个正则表达式,它将匹配任何零个或多个字符之前的任何单词,而不是后面跟着
]]
的方括号:参见this regex demo。
在
$0
表示整个匹配值的所有三种情况下,替换将是$0한
。图案详情
(?:\G(?!\A)|\[\[)
-前一个匹配的结束((?!\A)
不包括来自\G
的字符串位置的开始)或[[
(?:(?!\[\[|]]).)*?
-任意一个字符(除了换行符字符,如果 *.
匹配换行符 * 为OFF,否则包括换行符),零次或多次出现,但尽可能少,这不是[[
或]]
字符序列的起始点(因此,只在[[
和]]
之间进行匹配,但这本身并不要求]]
就在那里)\K
-一个匹配重置操作符,它从总体匹配值中丢弃到目前为止匹配的文本\w+
-一个或多个单词字符(?=.*?]])
-一个积极的前瞻,需要零个或更多的字符,而不是换行符字符(如果 *.
匹配换行符 * 选项为OFF,否则包括换行符),尽可能少,然后]]
。