2015-09-25 9 views
-1

Я думаю, что это, вероятно, легко, но у меня нет времени, чтобы узнать, как это сделать.Как я могу извлечь определенное число из строки, используя регулярные выражения?

В HTML-файла, у меня есть определенный класс пункта, давайте говорить:

<p class="footnote"></p> 

«P» тег всегда следуют цифры, которые увеличивают на единицу в каждом конкретном случае. Скажем, первое число - «43». Я хочу, чтобы серия чисел начиналась с 1, поэтому мне нужно вычитать 42 из всех абзацев.

Например, я хотел бы перейти от:

<p class="footnote">43. Lorem</p> 
<p class="footnote">44. Ipsum</p>. 
<p class="footnote">45. Dolor</p>. 

в

<p class="footnote">1. Lorem</p> 
<p class="footnote">2. Ipsum</p>. 
<p class="footnote">3. Dolor</p>. 

Как я могу это сделать?

+0

Источники говорят, что регулярное выражение не может выполнять математику. http://stackoverflow.com/questions/5245087/math-operations-in-regex Если вы работаете с InDesign, вам нужно будет использовать скрипт. – user1754036

ответ

0

Если вы ищете регулярное выражение, которое будет обрабатывать <p class="footnote">43. Lorem</p> ответ don't parse HTML with regex.

Предполагая, что вы извлекли строку 43. Lorem из тега, и вы хотите, чтобы получить число из того это зависит от ваших требований:

Чтобы найти любое число: \d+

Чтобы найти любое число в начиная: ^\d+

Чтобы найти любое число, за которым следует период: \d+\.

более полное решение потребует более подробной информации о включая язык программирования, который вы хотите использовать.

+0

Хорошо, я думаю, мне нужно будет найти альтернативное решение. –

0

Получить текст с помощью javascript (хотя я буду использовать jQuery), разделить текст, получить первый элемент и преобразовать в целое число.

$(".footnote").each(function(){ 
    var text = $(this).text(); // Get text 
    var num = text.split(/\s+/g)[0]; // Split by whitespace and get the first elem 
    console.log(parseInt(num)); // Convert the elem to an int 
});