求一个正则表达式 100

获取用户输入框的数据,是不是符合如下格式:key=valueANDkey1=value1orkey2=value2其中key是字段名value是字段值,一个key=val... 获取用户输入框的数据,是不是符合如下格式:
key = value AND key1 = value1 or key2 = value2
其中key 是字段名 value是字段值,一个key = value就是一个条件,多个条件的话用AND和OR 拼接,注意是大写的AND和OR,value值是带单引号的,。如:gxid = 'sf23434-d%^$#@^'
补充:
1.输入框中获取的字符串可以为空
2.获取的字符串不为空的话开头必须是key = ‘value’格式等于号两边是必须有空格的值是在单引号里面,这个值可以是任何字符串,数字字母汉字标点特殊符号等
3.如果有多个条件的话,
用大写的AND或OR拼接,如:as = ‘mm’ AND bb = ‘nn’不能是as = ‘mm’ AND也不能是as = ‘mm’ OR
4.目的是判断sql查寻语法正确不正确
展开
 我来答
匿名用户
2022-12-26
展开全部

下面是一个正则表达式,可以用来匹配满足上述要求的字符串:

^(?:(?<key1>\w+)\s*=\s*'(?<value1>[^']*)'\s+(?:(?:AND|OR)\s+(?<key2>\w+)\s*=\s*'(?<value2>[^']*)')*)?$

该正则表达式分为四个部分:

1、以^开头和以$结尾,表示匹配的字符串必须是完整的字符串,不能包含其他字符。

2、中间的部分是一个可选的分组,表示可以匹配空字符串。如果要匹配非空字符串,则必须满足如下条件:

  • 必须以key1 = 'value1'的格式开头,其中key1是字段名,value1是字段值,两边有空格,值在单引号内。

  • 可以包含多个条件,用大写的AND或OR拼接,且条件之间必须有空格。每个条件的格式为key2 = 'value2',其中key2是字段名,value2是字段值,两边有空格,值在单引号内。

3、在分组中,使用了命名分组,分别为key1、value1、key2、value2。这样可以方便地获取匹配的字段名和字段值。

4、在匹配字段值时,使用了负向预测先行断话(negative lookahead)来防止匹配到值中的单引号。负向预测先行断言的写法为(?!...),表示后面的模式不能匹配到,才能继续匹配。在这里,我们使用了[^']*来匹配任意多个不是单引号的字符,后面跟着一个负向预测先行断言(?!'),表示匹配的字符串后面不能是单引号。这样就可以防止匹配到值中的单引号。

例如,使用这个正则表达式匹配字符串key1 = 'value1' AND key2 = 'value2'可以得到如下结果:

  • key1分组匹配到key1

  • value1分组匹配到value1

  • key2分组匹配到key2

  • value2分组匹配到value2

此外,你还可以使用该正则表达式匹配空字符串,例如:

  • 匹配字符串'',所有命名分组均不匹配

  • 匹配字符串key1 = 'value1',key1分组匹配到key1,value1分组匹配到value1,其他命名分组均不匹配

  • 希望这个正则表达式能帮助你解决问题。

追问

key和value都是变量,不是固定的,可以是:sfsfd = 'dfg34' 也可以是: MHGF = ‘第三方24省道’

Prokint
2022-12-26
知道答主
回答量:10
采纳率:0%
帮助的人:6782
展开全部
^(\s*(key\s*=\s*'[^']*'))(\s+(AND|OR)\s+(key\s*=\s*'[^']*'))*$
如果对你有帮助可以支持答主点个赞,谢谢
追问

key和value都是变量,不是固定的,可以是:sfsfd = 'dfg34' 也可以是: MHGF = ‘第三方24省道’

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
话说科技力量
2022-12-26 · 科学技术是第一生产力
话说科技力量
采纳数:151 获赞数:211

向TA提问 私信TA
展开全部

你可以使用正则表达式来匹配输入框中获取的字符串,以判断它是否符合上述格式。

下面是一个示例正则表达式:

^(?:(?P<key1>\w+) = ' (?P<value1>.*?) ' (?:(?:AND|OR) (?P<key2>\w+) = ' (?P<value2>.*?) ')*)$

这个正则表达式的意思是:

  • 以键值对的形式匹配多个条件,例如:key1 = 'value1' AND key2 = 'value2'

  • 每个键值对中,键为一个单词(\w+),值为任意字符串(.*?),值的两端必须有单引号(')包围

  • 如果有多个条件,则使用大写的AND或OR((?:AND|OR))连接

  • 要使用这个正则表达式,你需要使用 Python 的 re 模块,或者其他编程语言的正则表达式库。

    例如,你可以这样使用正则表达式来匹配输入框中的字符串:

import re

pattern = r"^(?:(?P<key1>\w+) = ' (?P<value1>.*?) ' (?:(?:AND|OR) (?P<key2>\w+) = ' (?P<value2>.*?) ')*)$"
input_string = "key1 = 'value1' AND key2 = 'value2'"

match = re.match(pattern, input_string)
if match:
# 输入框中的字符串符合格式
# 可以使用 match.group() 获取匹配的整个字符串
# 使用 match.groupdict() 获取各个键值对的字典


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式