这是一个html代码段:
<input value="1" style="width: 90%;" type="text"></th><th style="cursor: default;" class=" filter">
<input value="2" class="tooltip" style="font-size: 0.8em; width: 90%;" placeholder="Datum" title="Datumsfilter
Mögliche Operatoren: < | > | <= | >= | <> < | > | <= | >= | <> | ..
Beispiele:
2016 | 2016-03 | 2016-03-24 (nur Jahr[-Monat[-Tag]])
>2015-02 | <=2016-09-15 (ab/bis angegebenem Jahr[-Monat[-Tag]] inkl./exkl.)
2016-03..2016-04-15 (angegebener Bereich)
<>2016-03 (ungleich)" type="text">
我必须提取值,type属性可能是任何顺序。
/(?=<input.*?type="text"[^>]*?>).*?value="([^"]*)/
适用于
<input value="1" style="width: 90%;" type="text"></th><th style="cursor: default;" class=" filter">
但它打破了“&gt;”在第二个标题属性中。我怎么解决这个问题?
答案 0 :(得分:-2)
为什么不使用
/\<input.{1,}?value="(.{1,}?)"/
它不那么复杂:只需在每个“输入”-tag之后获取第一个“value”-tag(贪婪量词)。然后得到价值。
注意:我选择了贪婪量词{1,}?
而不是*
来确保下次出现的value
将被选中,而不会在以后出现。
但如上所述:在这里使用正则表达式可能有更好的解决方案,例如,如果你使用的是php(?我不知道你是否这样做?)。根据您使用的语言,您可能需要更改一下regex-expression ...
答案 1 :(得分:-2)
这是脆弱的 ...
可以破坏,规避和违反 ......
危险使用它......
Good luck for all who ignore these warnings ...
有很多问题需要解决,以及如何挑选出来的ying yang,但如果你有良好的HTML ...... ......
您可以尝试:
<input(?: (?:value=(['"])(?<value>(?:(?!\1).)*)\1|\w+=(['"])(?:(?!\3).)*\3))*>
如果你敢的话,你可以mess around with it here。