我正在尝试<input>使用此模式匹配类型"隐藏"字段:
/<input type="hidden" name="([^"]*?)" value="([^"]*?)" />/
Run Code Online (Sandbox Code Playgroud)
这是示例表单数据:
<input type="hidden" name="SaveRequired" value="False" /><input type="hidden" name="__VIEWSTATE1" value="1H4sIAAtzrkX7QfL5VEGj6nGi+nP" /><input type="hidden" name="__VIEWSTATE2" value="0351118MK" /><input type="hidden" name="__VIEWSTATE3" value="ZVVV91yjY" /><input type="hidden" name="__VIEWSTATE0" value="3" /><input type="hidden" name="__VIEWSTATE" value="" /><input type="hidden" name="__VIEWSTATE" value="" />
Run Code Online (Sandbox Code Playgroud)
但我不知道的type,name和value属性将始终出现在相同的顺序.如果type属性是最后一个,则匹配将失败,因为在我的模式中,它在开始时.
问题:
如何更改模式以使其匹配,无论<input>标签中属性的位置如何?
PS:顺便说一下,我正在使用基于Adobe Air的RegEx桌面工具来测试正则表达式.
我正在尝试使用Java regexp来匹配跨越多行的模式.该模式有一行以'A'开头,后跟正好50个字符,然后是一行或多行以'B'开头,后跟正好50个字符:
A... // exactly 50 chars after the A
B...
B...
Run Code Online (Sandbox Code Playgroud)
但是,Java正则表达式似乎并不支持这一点.
这是一个适用于A和B一行的正则表达式:
A.{50}[\\n[\\n\\r]]B.{50}[\\n[\\n\\r]]
Run Code Online (Sandbox Code Playgroud)
这是相同的正则表达式修改,以找到一个或多个B行:
A.{50}[\\n[\\n\\r]][B.{50}[\\n[\\n\\r]]]+
Run Code Online (Sandbox Code Playgroud)
但是,此正则表达式仅查找第一个B行上的前导B字符.
我[\\n[\\r\\n]]用来处理DOS和UNIX换行.启用MULTILINE模式不会影响结果.
问题似乎是当我使用带有'+'的括号将B行的正则表达式转换为可捕获多行的字符类时.
有没有关于Java regexp的东西,不允许'.' 字符或花括号来指定精确的行长度?