Мой вклад:
<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>
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 и по существу удалить первые две строки.
Это будет соответствовать чему-либо в теге span независимо от того, где оно находится в строке.
/(<span[^>]*>)[^<]*(<\/span>)/g
Вы можете разместить свой код?
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.