假设我有一个字符串,我只想匹配 value 为空的部分而不是 value 存在的部分?例如: &lang=&val=1233 我只需要 &lang 而不需要 &val 因为它有实际价值?我有这个
&(.+)=(?!\s\S)
与字符串中的 &lang=&val= 匹配的正则表达式。谁能帮我吗
假设我有一个字符串,我只想匹配 value 为空的部分而不是 value 存在的部分?例如: &lang=&val=1233 我只需要 &lang 而不需要 &val 因为它有实际价值?我有这个
&(.+)=(?!\s\S)
与字符串中的 &lang=&val= 匹配的正则表达式。谁能帮我吗
使用以下正则表达式:
(?:(?<=\?)|&)[^=]+=(?=&|$)
可以解释为:
(?: ....)
:非捕获(不组),根据您的目的可能不需要。\?
: 转义?
以匹配?
字面意思。(?<=\?)
: 意思是“前面有?
”:?
不包括在结果中。(?=&|$)
: 意思是“后跟&
”或~在输入的末尾”。以下是 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')
你的意思是
(&|?)([^&=]+)=(&|$)
(如果需要,可以使用非捕获组)
但我只会构建所有查询字符串参数的哈希并选择没有值的键。这更便宜。
尝试这个:
[?&]([^&]+)=(&|$)
第一组将具有您的参数的名称。
请注意,此正则表达式还将捕获一个空的第一个参数(val1
in foo.php?val1=&val2=ok
)
试试这个:
(&([^=]+))=(?=&)