正则判断2种随机出现的字段该怎么做?
比如一个字段abcd='123' 我需要提取abcd=后面的字符串,但有时候网页会是ab_cd='123'除了用if判断是否为空后再进行下一个正则以外,还有其他更好更简单的办法吗? 不知道你想要实现的是不是这种效果
>>> import re
>>> partern = re.compile(r"ab.?cd=('\d+')")
>>> partern.search("abcd='123'").group(1)
"'123'"
>>> partern.search("ab_cd='123'").group(1)
"'123'"
>>> isdkz 发表于 2022-2-16 10:51
不知道你想要实现的是不是这种效果
你说的这个方法也是不错,但针对这个确实没问题,但如果是完全不同的支付串呢,比如
success和error后面的字段,因为出现频率都是随机的,这个该咋办呢 本帖最后由 isdkz 于 2022-2-16 12:23 编辑
cdzjf 发表于 2022-2-16 11:58
你说的这个方法也是不错,但针对这个确实没问题,但如果是完全不同的支付串呢,比如
success和error后面 ...
再怎么随机也肯定有共同特征呀,
正则表达式不就是用来给字符串归类的,
没有共同特征怎么用正则表达式? cdzjf 发表于 2022-2-16 11:58
你说的这个方法也是不错,但针对这个确实没问题,但如果是完全不同的支付串呢,比如
success和error后面 ...
其实你的问题根本上是如何总结你要提取的字符串出现位置的特征,最简单的办法,把自己判断的方法用代码实现出来~~ lightninng 发表于 2022-2-16 18:40
其实你的问题根本上是如何总结你要提取的字符串出现位置的特征,最简单的办法,把自己判断的方法用代码实 ...
那也就是要加if,就是想想看有什么不加if可以直接做的方法 本帖最后由 isdkz 于 2022-2-17 12:00 编辑
cdzjf 发表于 2022-2-16 23:20
那也就是要加if,就是想想看有什么不加if可以直接做的方法
字符串处理就没有正则不能做的,关键是你得知道你要处理的字符串的通性是什么
比如你后面说的那个:
>>> import re
>>> partern = re.compile(r".+=('.+')")
>>> partern.search("success='test0'").group(1)
"'test0'"
>>> partern.search("error='test1'").group(1)
"'test1'"
>>>
可是你都没说清楚你的需求是什么真的没法写出你想要的正则
cdzjf 发表于 2022-2-16 23:20
那也就是要加if,就是想想看有什么不加if可以直接做的方法
不一定要用if,而且用不用if只是具体的技术问题,关键点在于特征是什么,特征有了,就像楼下这位说的,用正则也可以,而且你想表达的我觉得也不一定是说不用if把,在3.9之后的版本里,连续的if else语句可以用switch来代替,我想大概率也不是你想要的结果把~~ lightninng 发表于 2022-2-22 08:13
不一定要用if,而且用不用if只是具体的技术问题,关键点在于特征是什么,特征有了,就像楼下这位说的,用 ...
主要是有时候网页的很多类似的,比如
名字,姓名,姓氏等等
英文的
finish,complete,accomplish等等
这样就导致了在做正则的时候,你必须要考虑他网页已经出现过的字段,这就是麻烦点了
如果正则在做的时候可以来个 or 把上面这些可能出现的都写进去就好了 是否就像匹配邮箱一样,邮箱包括@qq.com@emaill.com @outlook.com可以百度查询下关于邮箱的通用正则式借鉴 cdzjf 发表于 2022-2-23 15:30
主要是有时候网页的很多类似的,比如
名字,姓名,姓氏等等
英文的
既然你人能锚定要判断的字段的位置,那就可以用正则提取到这个位置的字符内容,比如现在有个内容就在#后面,可能出现的情况有三种,也就是#finish,#complete,#accomplish,那你就用正则把#后面的字符提取出来,然后判断它是否属于finish,complete,accomplish这三个其中的一种,代码可能是这样
result = re.compile(r"#([\s\S]*?)").search(string).group(1) #string就是你要在其中搜索你需要内容的源字符串
if result in ["finish","complete","accomplish"]:
# 这里写查找到目标字符串的处理代码finish,complete,accomplish
页:
[1]