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

正则表达式,在两个括号之间提取字符串Not

时仰岳
2023-03-14

好的正则表达式问题,如何提取不在两个字符之间的字符,在本例中为括号。

我有一个字符串,例如:word1 |{word2 | word3}| word 4

我只想得到第一个和最后一个“管道”,而不是括号内的第二个。我尝试了无数次负克拉和负分组的尝试,但似乎无法让它发挥作用。

基本上,我在JavaScript拆分函数中使用这个正则表达式将其拆分为一个数组,其中包含:“word1”、“{word2|word3}”、“word4”。

任何帮助都将不胜感激!

共有2个答案

戚同
2023-03-14

取决于您使用的语言/实现,但是。。。

\|(?![^{]*})

这与后面没有}的管道相匹配,除非首先是{/code>。

代码(?!…) 被称为负前瞻断言。如果我们从积极的前瞻性断言开始,这更容易理解:

\|(?=[^{]*})

以上仅匹配后面跟着一个>的管道,而不首先遇到一个{。当您通过将=替换为!来否定这一点时,现在仅当无法使正数为真(也称为补码)时匹配才成功。

楚和悌
2023-03-14

重新填充时。com设置为JavaScript,请尝试使用此模式

/\|(?![^{]*})/g

使用此文本

word1 | {word2 | word3 } | word 4 | word 4 | {word2 | word3 }

这应该匹配所有不在{}内的管道符号。

 类似资料:
  • 问题内容: 不幸的是,尽管尽我所能记住,每年尝试至少一年学习一次正则表达式,但我却经常忘记,因为我很少使用它们。今年,我新年的决心是不要再尝试学习正则表达式因此,今年,为了避免让我流泪,我将把它交给Stack Overflow_ 。 我想以这种格式传递一个字符串,然后返回该字符串。有人能协助我们坚持我的新年决议吗? 问题答案: 如果您的字符串将始终是该格式,则正则表达式会显得过大: 表示以一个字符

  • 问题内容: 我发现了非常相似的帖子,但是我在这里不能完全得到正则表达式。 我正在尝试编写一个正则表达式,该表达式返回一个位于其他两个字符串之间的字符串。例如:我想获取字符串“ cow”和“ milk”之间的字符串。 我的牛总是喂牛奶 会回来 “总是给” 到目前为止,这是我拼凑的表达方式: 但是,这将返回字符串“牛总是给”。 问题答案: 前瞻(该部分)不消耗任何输入。这是一个 零宽度的断言 (边界检

  • 问题内容: 当我使用某种方式时,它仍然会触发,好像连字符无效。我试着和 问题答案: 转义使用应该没问题,但是您也可以尝试将其放在字符类的开头或结尾。这应该为您工作:

  • 我需要把绳子接上 到目前为止,我有这个,但不知道如何截断实际的“字符串分隔符”:

  • 问题内容: 我试图编写一个正则表达式,该表达式返回括号之间的字符串。例如:我想获取位于字符串“(”和“)”之间的字符串 会回来 找到正则表达式以获取Javascript中两个字符串之间的字符串,但是我对regex并不陌生。我不知道如何在正则表达式中使用’(’,’)’ 问题答案: 您需要创建一组转义的(带有)括号(与括号匹配)和一组常规的括号来创建捕获组: 分解: :匹配左括号 :开始捕获组 :匹配