我需要一种方法来使用RegEx搜索文本并在Latex命令中找到一个单词(这意味着它在花括号内)
以下是示例:
Tarzan is my name and everyone knows that {Tarzan loves Jane}
现在,如果您搜索正则表达式:({[^{}]*?)(Tarzan)([^}]*})
并将其替换为$1T~a~r~z~a~n$3
这将仅替换花括号内的单词Tarzan而忽略其他实例!这就是我来的。
现在我需要的是用以下示例做同样的事情:
Tarzan is my name and everyone knows that {Tarzan loves Jane} but she doesn't know that because its written with \grk{Tarzan loves Jane}
在这个例子中,我只需要最后一次提及" Tarzan"要替换(\ grk {}中的那个)
有人可以帮我修改上面的RegEx搜索只做那个吗?
答案 0 :(得分:2)
您可以尝试使用此模式:
(?:\G(?!\A)|\\grk{)[^}]*?\KTarzan
细节:
(?:
\G(?!\A) # contiguous to a previous match
| # OR
\\grk{ # first match
)
[^}]*? # all that is not a } (non-greedy) until ...
\K # reset the start of the match at this position
Tarzan # ... the target word
注意:\G
匹配上一个匹配后的位置,但它也匹配字符串的开头。这就是我添加(?!\A)
以防止在字符串开头匹配。
或者您可以使用:\\grk{[^}]*?\KTarzan
多次通过。