Как получить данные между "_id =" и "&"? - PullRequest
2 голосов
/ 20 сентября 2009

Как мне разобрать строку "7c23a12f0cffa6cf2fac0baf8eacf4c1" из файла .. Я пытаюсь получить данные между _id= и &

файл примера:

4593733f4ab534f0001ecbe20000b3e9/cgi-bin/rsspipes/dispatch?Alternative=10&Category=ECMINSTITUTE&Type=News&_action=run&<b>_id=7c23a12f0cffa6cf2fac0baf8eacf4c1</b>&_out=json&_render=json&_time=&dojo_preventCache=1253389550099Z1f8wengine.pipes.yahoo.com:8080rhttp://ecminstitute.appspot.com/gMozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.910jdmm6t5aneif&b=4&d=zhJNm4hpYEL50eT2b_Zabr3mZKV2C34ShzuA1A--&s=qm&i=.a0EUfWk9n2pue72QqA3

Ответы [ 5 ]

4 голосов
/ 20 сентября 2009
id=([^&]*)&

Данные между id = и & будут сопоставляться первой (и единственной) группой, а затем будут доступны через .group(1) или аналогичным образом в зависимости от библиотеки языка / регулярных выражений.

Редактировать: + изменено на * согласно предложению Йоханнеса Ресселя.

3 голосов
/ 20 сентября 2009

Это немного более надежно, чем некоторые альтернативы.

[&?]_id=([a-f0-9]+)(?:[&]|$)
[&?] # makes sure it isn't part of another parameter
_id=
(
  [a-f0-9]+ # at least one hexadecimal digit
)
(?:
  [&] # make sure there isn't some trailing data
|
  $   # might be at the end of the string
)
3 голосов
/ 20 сентября 2009

Используйте регулярное выражение, подобное этому:

_id=([a-f0-9]+)&

Скобки определяют группу, которую вы можете извлечь из результатов.

0 голосов
/ 20 сентября 2009

Я бы использовал следующее (не жадное) регулярное выражение Perl:

/_id=(.*?)&/
0 голосов
/ 20 сентября 2009

Я бы использовал

perl -ne 'm/[&?]_id=([^&]+)(&|$)/ && print $1;' [file]

где [file] - имя файла, содержащего данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...