正则表达式在大括号内查找单词
Regex to Find a Word Inside Curly Braces
我需要一种方法来使用 RegEx 搜索文本并在 Latex 命令中找到一个词(这意味着它在大括号内)
示例如下:
Tarzan is my name and everyone knows that {Tarzan loves Jane}
现在,如果您搜索正则表达式:({[^{}]*?)(Tarzan)([^}]*})
并将其替换为 T~a~r~z~a~n
这将只替换花括号内的单词 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 搜索以仅执行此操作吗?
你可以试试这个模式:
(?:\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
多次传递。
我需要一种方法来使用 RegEx 搜索文本并在 Latex 命令中找到一个词(这意味着它在大括号内)
示例如下:
Tarzan is my name and everyone knows that {Tarzan loves Jane}
现在,如果您搜索正则表达式:({[^{}]*?)(Tarzan)([^}]*})
并将其替换为 T~a~r~z~a~n
这将只替换花括号内的单词 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 搜索以仅执行此操作吗?
你可以试试这个模式:
(?:\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
多次传递。