Я хочу написать регулярное выражение, совпадающее со строкой, которая начинается с необязательного пробела, <
, куча вещей, а затем >
.Например, все это должно соответствовать 3 раза:
<div
data-test="foo"
class="first bar baz"
>
<h2>test</h2>
</div>
У меня это работает, и он использует следующее регулярное выражение: (^\s*<.*?>\s*$)+
.Проверьте это в действии здесь .
Однако в настоящее время он работает, генерируя три совпадения.Есть ли способ сделать так, чтобы соседние строки, которые совпадают, возвращались как одно совпадение?
В приведенном выше примере, так как все сопоставлено, я хочу, чтобы оно возвращалось как одно совпадение.Может ли это произойти?
Редактировать: Чтобы уточнить - регулярное выражение должно соответствовать:
<foo>
также
<h1>test</h1>
и даже
< b-8253j'\sf>
, но игнорировать
foo<bar>
, поскольку он фактически не начинается с <
.
Если в той же строке не найдено >
, он продолжаетсячтобы соответствовать всем строкам, пока не достигнет >
:
<div
matches
here>but this line is also matched</div>
Как я уже сказал, это делает мое регулярное выражение.Тем не менее, это будет соответствовать этому:
<div>
<foo></foo>
<baaaar>
Три разных раза.Поскольку все совпадает, я хочу, чтобы эти совпадения были объединены и возвращены как одно совпадение.
Однако, если средняя строка, например, недействительна, она должна вернуть 2 совпадения:
<div> // match 1
no<foo></foo> // doesn't start with `<`, ignored
<baaaar> // match 2