如何使用正则表达式从字符串中获取变量和值

qrppablo

我有一些来自数据库查询的“人类可读格式”的动态字符串。我需要直接从这些字符串中获取变量和当前值。我以前从未使用过正则表达式,所以我尝试为它构建一个表达式,但我被卡住了。

这就是我的字符串的样子:

"NOT (Name = John AND Date = 08.04.2022 AND (Status = Not active OR Status = Iddle) OR Surname != Doe)"

我尝试了几个表达式但没有成功,这是我得到一些结果的独特之处:

/\w*\ \=\ \w*/ig

它返回下一个正确的匹配:

Name = John
Status = Iddle

这些正确(但不完整)的匹配:

Date = 08
Status = Not

在变量Surname和值Doe之间有一个!=运算符。为此,我尝试在表达式中更改= for !=但它不起作用,我尝试将| (我理解的 OR 运算符),例如=|!=但它也不起作用......

对查询本身进行一些分析,它由以下组成:

  1. 变量(任何单词、字符、符号,可以包含空格或这些的混合)
  2. 空白
  3. 运算符(=、!=、<、<=、>=)
  4. 空白
  5. 值(与变量相同)

变量运算符值可以以空格(字符开头,也可以以空格)字符结尾。

关于如何为它构建表达式的任何想法?

这些值有很多可能性。以下不区分大小写的正则表达式应该是您的开始,它可以识别单引号字符串(如果使用反斜杠转义,则可以包含嵌入的单引号)或任何其他值,这些值是一系列特殊的非空白字符来处理标识符和数字。它还处理布尔值前面带有 NOT(不区分大小写)的值的情况:

\b(\w+)\b\s*(=|!=|<|<=|>|>=)\s*('(?:\\'|[^'])*'|(?:NOT\s+)?[\w.+-]+)

正则表达式演示

  1. \b(\w+)\b- 捕获组 1:匹配单词边界上的单词字符序列(变量名称)。
  2. s*(=|!=|<|<=|>|>=)\s*- 捕获组 2:可能的运算符可能通过空格与变量名称和值分开。
  3. (- 捕获组 3 的开始(值)。
  4. (?:\\'|[^'])*'- 第一种选择:可能转义的单引号字符串。
  5. |或者。
  6. (?:NOT\s+)?[\w.+-]+- 第二种选择:特殊的非空白字符序列(单词字符、'+'、'-'、'.')可选地前面有 NOT,后跟空格。
  7. )- 捕获组 3 结束。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过正则表达式从字符串中获取令牌和登录值?

如何通过使用正则表达式从字符串中获取特定值

如何使用正则表达式从字符串中获取不同类型的值?

如何使用正则表达式从字符串中获取“m”米和“km”?

如何在正则表达式的冷融合中获取特定字符串的值

使用正则表达式从字符串中获取特定值

如何使用正则表达式将变量替换为计算字符串中的值?

使用正则表达式和JavaScript获取字符串中的完全匹配

如何使用正则表达式拆分字符串值并返回数组和对象?

如何使用正则表达式从Bash中的字符串中提取变量?

如何使用正则表达式从字符串中获取数字?

如何使用javascript正则表达式从字符串中获取域

如何使用正则表达式仅获取字符串括号中的内容?

如何使用正则表达式从引号中获取字符串

如何使用正则表达式在 Javascript 中传递字符串值数组

如何使用正则表达式从字符串中检索值?

使用正则表达式如何删除字符串中的日期和时间?

使用正则表达式从输入字符串中获取键值字符串?

如何使用正则表达式或不使用字符串中的正则表达式在空格后获取 2 个字符

如何正则表达式匹配和正则表达式替换php中的字符串

在javascript中匹配指定的正则表达式后如何获取单独变量中的字符串

如何使用正则表达式从字符串中删除特定字符串

使用xsl使用正则表达式分析字符串,使用属性文件中的值进行变量替换

如何在正则表达式的帮助下从字符串获取年,月和日的值

如何仅使用正则表达式从子字符串中获取所有正则表达式匹配项

使用正则表达式从“变量=值”字符串中提取值

正则表达式:如何从这个字符串中获取“按位”值之后的“宽度”和“高度”值?

获取字符串正则表达式中的完整值

正则表达式:从JavaScript中的字符串获取高度值