假设我有一个字符串,我想只匹配值为空的部分而不是值存在的部分? 例如:& lang =& val = 1233 我只需要& lang而不是& val,因为它有实际价值? 我有这个
&(.+)=(?!\s\S)
在字符串中匹配& lang =& val =的正则表达式。
任何人都可以帮助我
答案 0 :(得分:1)
使用以下正则表达式:
(?:(?<=\?)|&)[^=]+=(?=&|$)
可以解释为:
(?: ....)
:不捕获(不组成团体),根据您的目的可能不需要这样做。\?
:转义?
以确切匹配?
。(?<=\?)
:意为“以?
开头”:?
未包含在结果中。(?=&|$)
:意思是“后跟&
”或“输入结束时”〜。以下是Python交互式shell中的示例测试:
>>> pattern = r'(?:(?<=\?)|&)[^=]+=(?=&|$)'
>>> re.findall(pattern, '&lang=&val=')
['&lang=', '&val=']
>>> re.findall(pattern, '&lang=&val=1233')
['&lang=']
>>> re.findall(pattern, '&lang=&val=&val2=123&val3=')
['&lang=', '&val=', '&val3=']
>>> re.findall(pattern, '?lang=&val=&val2=123&val3=')
['lang=', '&val=', '&val3=']
>>> re.findall(pattern, '?lang=blah&val=&val2=123&val3=')
['&val=', '&val3=']
>>> re.findall(pattern, 'www.html.com?user=&lang=eng&code=.in')
答案 1 :(得分:0)
(&|?)([^&=]+)=(&|$)
(如果需要,可以使用非捕获组)
但我只是构建所有查询字符串参数的哈希值并选择没有值的键。它更便宜。
答案 2 :(得分:0)
试试这个:
[?&]([^&]+)=(&|$)
第一组将具有参数的名称。
请注意,此正则表达式还会捕获空的第一个参数(val1
中的foo.php?val1=&val2=ok
)
答案 3 :(得分:0)
试试这个:
(&([^=]+))=(?=&)