Мой вклад:
<span question_number="18"> blah blah blah 1</span><span question_number="19"> blah blah blah 2</span>

И я хочу, чтобы мое регулярное выражение соответствовало этому <span question_number="somenumber">xxxx</span> шаблон
и желаемый результат равен 1.somenumber 2.xxxx

Я написал наивное решение, которое может охватывать
<span question_number="18"> blah blah blah 1</span>
<span question_number="19"> blah blah blah 2</span>
обратите внимание: они на разных линиях
вывод: 18, blah blah blah 1 и 19, blah blah blah 2

Но когда вводом является <span question_number="18"> blah blah blah 1</span><span question_number="19"> blah blah blah 2</span>
который находится на одной линии

Мой вывод 18, blah blah blah 1</span><span question_number="19"> blah blah blah 2

Как я мог обойти эту проблему?

Обновить: регулярное выражение: \<span question_number=(?:\")*(\d*)(?:\")*>(.*)<\/span>

Testinput:
case1 -> две строки кода
<span question_number="54">often graces doorways tied into ropes called</span>
<span question_number="54">often graces doorways tied into ropes called <i>ristras</i>.</span>
case2 -> одна строка кода
<span question_number="54">often graces doorways tied into ropes called</span><span question_number="54">often graces doorways tied into ropes called <i>ristras</i>.</span>

-1
MohanL 6 Сен 2016 в 19:23

2 ответа

Лучший ответ

Если вы уже работаете с JavaScript / HTML, а не используете регулярные выражения для извлечения данных из HTML, обычно гораздо проще использовать инструменты запросов DOM, которые уже доступны в браузере.

const d = document.createElement("div");
d.innerHTML = yourSpanContent;

Array.from(d.querySelectorAll("span")).map(span =>
  `1. ${span.getAttribute("question_number")} 2. ${span.innerText}`
);

Если HTML-код, с которым вы работаете, уже находится в DOM, вы можете выбрать из этого DOM и по существу удалить первые две строки.

2
Explosion Pills 6 Сен 2016 в 16:39

Это будет соответствовать чему-либо в теге span независимо от того, где оно находится в строке.

 /(<span[^>]*>)[^<]*(<\/span>)/g

Вы можете разместить свой код?

0
Rick St Jean 6 Сен 2016 в 16:44