相关疑难解决方法(0)

怎么做正则表达式模式与字符串中的任何地方都不匹配?

我正在尝试<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,namevalue属性将始终出现在相同的顺序.如果type属性是最后一个,则匹配将失败,因为在我的模式中,它在开始时.

问题:
如何更改模式以使其匹配,无论<input>标签中属性的位置如何?

PS:顺便说一下,我正在使用基于Adobe AirRegEx桌面工具来测试正则表达式.

html regex parsing

176
推荐指数
5
解决办法
5万
查看次数

Java Regular Expression用于查找特定长度的多行

我正在尝试使用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的东西,不允许'.' 字符或花括号来指定精确的行长度?

java regex

5
推荐指数
1
解决办法
3460
查看次数

标签 统计

regex ×2

html ×1

java ×1

parsing ×1