如何获得除;
符号以外的输入值?
正则表达式:
\<[a-z]+ .*value=([^;]+).* \/\>
文本:
<input type="hidden" name="pic" value=";10giddw" />
提前致谢。
答案 0 :(得分:1)
标准答案是“使用解析器”。对于正则表达式,有三种选择。
选项1:Perl中的\K
,PCRE(PHP,R,Notepad ++),Ruby 2 + ......
value=";\K[^"]+
\K
告诉引擎放弃与其返回的最终匹配相匹配的内容。
选项2:在上方和大多数其他引擎中看待后方
(?<=value=";)[^"]+
lookbehind (?<=value=";)
断言当前位置之前的位置是value=";
,但与之不匹配。
选项3:在JavaScript(以及所有其他引擎)中捕获组
value=";([^"]+)
括号将值捕获到第1组。
答案 1 :(得分:1)
我认为您正在寻找的正则表达式是捕获value
属性的内容但不包括分号(;
)的正则表达式,因此您需要类似
"<.+value=\"([^;]*?)(?:;([^;]*?))?\".*\/>"g
重要位的说明:
([^;]*?)
懒惰地捕获任何非分号字符,这意味着它会在第一时间停止。(?:;([^;]*?))?
包含以下内容的非捕获组:
;
匹配分号([^;]*?)
另一个非分号字符的懒惰捕获组?
整个群组都是可选的。它可以存在,也可以不存在。除了分号之外,这两个组捕获value
之后引号之间的所有字符。请注意,如果value
属性中有多个分号,则无法以当前形式运行。