RegEx слова соответствуют - PullRequest
0 голосов
/ 08 января 2012
Элемент

на странице необходим контент, который я пытаюсь вытащить вот это element.content после разбора с Нокогири

["\n       \n       \n       \n          itemId[0]=1234;\n       \n        \n          \n        \n       \n       \n       \n        My Project: First Edition\n       \n      ", "\n       \n       \n       \n          itemId[1]=2345;\n       \n        \n          \n        \n       \n       \n       \n        My Second Edition\n       \n      ", "\n       \n       \n       \n          itemId[2]=1234;\n       \n        \n          \n        \n       \n       \n       \n        Third\n       \n          \n"]

Мне удалось получить RegEx для itemId[0]=1234, который равен (/itemId.\d+..\d{4}/), но я полностью застрял в том, как получить имена содержимого. Любой совет? Возможно, я могу просто разобрать Ruby через HTML?

Ответы [ 2 ]

0 голосов
/ 08 января 2012

Я предлагаю вам использовать split, чтобы найти все непустые строки.

str.split(/\s*\n\s*/)

должно сработать.

0 голосов
/ 08 января 2012

Имея такую ​​строку:

s= "\n       \n       \n       \n          itemId[0]=1234;\n       \n        \n          \n        \n       \n       \n       \n        My Project: First Edition\n       \n      "

Вы можете сделать это:

m    = s.match(/(itemId\[\d+\]=\d+);(.*)/m)
item = m[1]
# itemId[0]=1234
name = m[2].strip
# My Project: First Edition

В основном вы вытаскиваете часть itemId..., используя (более или менее) или существующее выражениеВозьмите оставшуюся часть строки ((.*)) в многострочном режиме (/m, чтобы . соответствовал символу новой строки), а затем удалите ошибочные пробелы вне регулярного выражения, используя strip.Вам не нужно создавать одно нечитаемое регулярное выражение, которое делает все, что вам нужно, постобработка результата матча разрешена, а иногда даже поощряется.

...