这是一个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">
但是它在第二个title属性中的">"中中断。我怎样才能解决这个问题?
为什么不使用
/<input.{1,}?value="(.{1,}?)"/
则不那么复杂:只需在每个"输入"标记之后获取第一个"值"标记(贪婪量词)。然后获取值
注意:我在这里选择贪婪量词{1,}?
而不是*
,以确保value
的下一个出现将被选中,而不是任何以后的出现。
但如前所述:这里可能有比使用正则表达式更好的解决方案,例如,如果您正在使用php (?我不知道你是否知道?)根据您使用的语言,您可能需要稍微更改regex表达式…
https://regex101.com/r/kB3wR2/1这是脆弱…
它可以被破坏,规避和违反…
使用它是危险的
祝所有忽视这些警告的人好运…
有很多问题会遇到,也有很多方法可以找出阴阳,但是如果你有一个格式良好的HTML... ... ...
<引用类>你可以试试:<input(?: (?:value=(['"])(?<value>(?:(?!1).)*)1|w+=(['"])(?:(?!3).)*3))*>
如果你敢的话,你可以在这里乱搞。
引用类>