如何解析文件中的字符串“7c23a12f0cffa6cf2fac0baf8eacf4c1”..我正在尝试检索_id=
和&
之间的数据
示例文件:
4593733f4ab534f0001ecbe20000b3e9/cgi-bin/rsspipes/dispatch?Alternative=10&Category=ECMINSTITUTE&Type=News&_action=run&_id=7c23a12f0cffa6cf2fac0baf8eacf4c1&_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
答案 0 :(得分:4)
id=([^&]*)&
id =和&之间的数据将由第一个(也是唯一的)组匹配,然后可以通过.group(1)
或类似的方式访问,具体取决于语言/正则表达式库。
修改:根据JohannesRössel的建议,将+
更改为*
。
答案 1 :(得分:3)
使用像这样的正则表达式:
_id=([a-f0-9]+)&
括号定义了一个可以从结果中检索的组。
答案 2 :(得分:3)
这比一些替代方案更强大。
[&?]_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 :(得分:0)
我用
perl -ne 'm/[&?]_id=([^&]+)(&|$)/ && print $1;' [file]
其中[file]
是包含数据的文件的名称。
答案 4 :(得分:0)
我使用以下(非贪婪)Perl正则表达式:
/_id=(.*?)&/