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

javascript - 正则表达式如何提取小括号中内容,且支持子表达式?

安明亮
2023-10-16

有以下语句

title="beijing" && body="login" && (title="a")

想实现的功能如下:

  1. 当输入title时,正则表达式可以把title作为关键字提取出来
  2. 当输入title="beijing" && body时,正则表达式可以把body作为关键字提取出来
  3. 当输入title="beijing" && body="login" && (title="a" && body)时,正则表达式可以把小括号中body作为关键字提取出来

上述功能主要是把=号左值(关键词)提取出来,从而实现键入关键词时自动匹配给予提示的功能

注意:语法不固定,比如title="beijing" && body="login" && (title="a"),下次可能body="beijing" && body="login" && (ip="123" || ip="xxx")

共有2个答案

白浩荡
2023-10-16

1.

(?<=\btitle\b).*?(?=\=)

2.

(?<=\btitle="beijing" && \b).*?(?=\=|&&|\(|$)

3.

(?<=\btitle="beijing" && body="login" && \(.*\b).*?(?=\=|&&|\)|$)
戚奇略
2023-10-16

要实现你描述的功能,可以使用以下正则表达式:

\b(\w+)\b|\((\w+)\)

这个正则表达式可以匹配两种类型的模式:

  1. \b(\w+)\b:匹配一个完整的单词(由字母、数字或下划线组成),例如titlebody
  2. \((\w+)\):匹配小括号内的单词。注意,这个小括号是正则表达式的一部分,必须在特殊字符前面加上反斜杠进行转义。

这个正则表达式会提取出符合要求的单词,你可以在提取结果中查找和提取出小括号内的内容。

以下是一个使用Python实现这个正则表达式的例子:

import retext = "title=\"beijing\" && body=\"login\" && (title=\"a\")"pattern = r'\b(\w+)\b|\((\w+)\)'matches = re.findall(pattern, text)for match in matches:    if isinstance(match, tuple):  # 如果匹配到的是完整单词        print(f"完整单词: {match[0]}")    else:  # 如果匹配到的是小括号内的单词        print(f"小括号内单词: {match}")

这段代码将输出以下结果:

完整单词: title完整单词: body小括号内单词: title="a"

可以看到,这段代码成功地找到了titlebody以及小括号内的title="a"中的title

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

  • 问题内容: 我想提取所有 用 大括号括起来的 单词 ,所以我有一个这样的表达式 匹配的字符串可能包含任意多个这样的单词,但是我开始认为我正在以错误的方式解决此问题。 我的尝试 而且我尝试将花括号这些词提取为组,以便可以使用每一个匹配项。所以,我做了一个正则表达式: 注意:我使用的是JRegex语法,因此我需要避免掉一些curl。 结果 我得到的结果是一个(虽然是正确的)比赛,而我希望有两个比赛和。

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

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

  • 问题内容: 我想使用正则表达式获取所有括号内的所有子字符串。 作为字符串“ foo(bar)foo(baz)golang”的示例,我想要“ bar”和“ baz” 在python中我可以做 怎么做呢? 问题答案: 的软件包不支持零宽度环顾四周。您可以通过以下功能利用捕获的分组: 输出: 正则表达式: 匹配文字 匹配串高达旁边,并把比赛以捕获组,在这里你可以使用非greeedy比赛太 匹配文字 去游

  • 问题内容: 我有类似的东西 商店 结束行像1商店..我想匹配,它使用python正则表达式。 我尝试了类似的方法, 但是没有用。 编辑:添加代码,我试过 请帮助。 谢谢吉乔 问题答案: 或多或少直接回复您的评论 尝试这个 解决方案是使用,而不是使用后者,因为后者试图将整个字符串与regexp匹配,而前者只是试图在字符串内部查找与表达式匹配的子字符串。