当前位置: 首页 > 知识库问答 >
问题:

正则表达式以在大括号内查找单词

郗唯
2023-03-14

我需要一种使用RegEx搜索文本并在Latex命令中找到一个单词的方法(这意味着它在花括号内)

这是一个例子:

Tarzan is my name and everyone knows that {Tarzan loves Jane}

现在如果你搜索正则表达式:({[^{}]*?)(Tarzan)([^}]*}),并将其替换为< code>$1T~a~r~z~a~n$3

这将只替换花括号中的泰山这个词,而忽略另一个实例!这是我来的最远的地方。

现在我需要的是对下面的例子做同样的事情:

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}

在这个例子中,我只需要最后提到的“泰山”被替换(\grk{}中的那个)

有人可以帮助我修改上面的正则表达式搜索来做到这一点吗?

共有1个答案

陆浩博
2023-03-14

您可以尝试使用此模式

(?:\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多次通过。

 类似资料:
  • 我需要通过不在括号中的管道拆分文本。这是示例文本 我在这里找到了这个/\ |(?![^{]*})/g:regex,提取字符串,不要在两个括号之间 现在当我想用管子分割这部分字符串时 它还选择杰森、玛丽亚和圣诞老人之间的管道,因为它们后面有一个开口支架。如果正则表达式不在任何括号中,如何将其更改为仅匹配管道。 测试字符串: 应该返回 . 应该返回

  • 我有一个输入字符串,里面有括号,外面有双引号。这些括号可以嵌套。我想去掉只有在双引号外才有括号的字符串。 我尝试了这个正则表达式这将获取包含在圆括号内的所有内容,无论双引号内外。 我得到的实际输出是: 我预计产出为:

  • 我在Java的一次采访中被问到这个问题。我不能解决它,但我猜它可以解决使用正则表达式。不确定是否有一种不使用正则表达式的替代方法。有人能帮我用正则表达式吗?或者,如果不使用正则表达式就能解决这个问题。 给定一个平衡括号字符串(它只包含或,并且它已经平衡),我需要查找它内部是否包含模式(表示一个或多个平衡括号表达式)。也就是说,检查它是否在任何中包含3个或更多的。 示例: 对于,预期答案为true,

  • 上面的正则表达式返回括号之间的文本。 如: 如何重写上面的正则表达式,所以我提供了一个类似的字符串,它将返回。i、 e带括号的部分,其中包含大括号中的字符串。

  • 问题内容: 匹配字符串中的’(’的正则表达式是什么? 以下是场景: 我有一串 我想使用正则表达式拆分字符串。为此,我正在使用 但是我收到以下异常。 转义似乎不起作用。 问题答案: 两种选择: 首先,你可以使用转义 回 斜线- 另外,由于它是单个字符,因此您可以将其放入不需要转义的字符类中-

  • 问题内容: 输入线在下面 你能帮我写一个Java正则表达式来提取 从上方输入线? 问题答案: 更加简洁: