我有两个正则表达式:
selected.*(?<=value=)(['"])(.*)\1
和
(?<=value=)(['"])(.*)\1(?=.*selected)
另外它们工作正常,但我需要一个匹配第一个或第二个的正则表达式。替代标志|这里没用。
我怎么能在一个正则表达式中匹配?
输入:
<option selected value="a">a</option>
<option value="b">b</option>
和
<option selected value="a">a</option>
<option value="b" selected>b</option>
第一个正则表达式匹配第一个输入中的'a',第二个正则表达式匹配第二个正则表达式中的'b',但是当我将两个正则表达式与替代符号组合时,新的正则表达式在两个输入中都不匹配。
答案 0 :(得分:3)
这个正则表达式适用于两种情况而不使用替换,即|
:
(?=.*?selected).*?(?<=value=)(['"])(.*?)\1
如果这些标签可以转到多行:
(?=[^>]*\sselected\b)[^>]*(?<=value=)(['"])([^>]*?)\1