我的表达式能够处理一个事件,但如果给定多个事件,它将捕获整个部分。你知道吗
我的正则表达式是
[=:]\s*[\"\']?(.*=_ash)[\"\']?
我同时尝试了regex.findall
和search
我得到了整个部分时,多个出现在那里。你知道吗
如果我的正则表达式本身有问题,我是否需要设置任何标志来搜索多个事件。你知道吗
前三条线正常,但
sample_string = 'asdfanksdfkjasdf_ash'
sample_str = "asdfasdfasdf_ash"
sample_st = assdfvb/23+sdf_ash
sample_s : 'assdfvb/23+sdf_ash'
sample = {'sample' : { 'hi' : 'asdfasdf+/asdf+_ash' , 'hello' : 'asdfasf+/asdf+v_ash' }}
我只需要有价值的部分
模式的问题是
.*
。你知道吗默认情况下,regex引擎是贪婪的,
.*
消耗尽可能多的资源。要更改此行为,可以使用lazy quantifier。添加额外的“?在.*?
中的“使它尽可能少地重复。你知道吗此外,如果值不是以
"_ash"
结尾,请检查引用文本中的引号,如果没有引用,则检查空格:正则表达式:
regex101 Demo
(["'])
捕获组1中的引号(?:(?!\1).)*
匹配组1中捕获的引号以外的任何字符\1
匹配结束引号(与开始引号相同)\S*
对于不带引号的文本,匹配除空格以外的任何内容(?!\S)
检查此处的值结尾如果值在引号中,则在
.group(2)
中捕获;如果值不在引号中,则在.group(3)
中捕获。你知道吗代码:
ideone Demo
我想你需要把正则表达式改成:
[Regex Demo]
相关问题 更多 >
编程相关推荐