如何在stringr中的两个模式或r

时间:2018-08-21 18:46:33

标签: r string stringr stringi

有一个带有两个字符串的向量。

text <- c("/p2?c1=19&c2=6036484&ns_ap_an=Cricbuzz%20Cricket%20Scores%20%26%20News&ns_ap_pn=android&ns_ap_pv=5.1&c12=32ba1387a295d3a195ed13a8a23a156e-cs31&ns_ak=none&name=background&ns_ap_ec=1&ns_ap_ev=start&ns_ap_device=along8321_emmc_706m&ns_ap_id=1527822461935&ns_ap_csf=1&ns_ap_bi=com.cricbuzz.android&ns_ap_pfm=android&ns_ap_pfv=5.1&ns_ap_ver=4.4.002&ns_ap_sv=5.5.1.170927&ns_ap_bv=1.2.1.170927&ns_ap_smv=2.17&ns_type=view&ns_radio=wwan&ns_nc=1&ns_ap_gs=1527821586037&ns_ap_jb=1&ns_ap_res=1024x552&ns_ap_sd=1024x600&ns_ap_po=0x0&ns_ap_install=1527821586037&ns_ap_lastrun=0&ns_ap_cs=4&ns_ap_runs=4&ns_ap_usage=870857&ns_ap_fg=0&ns_ap_ft=0&ns_ap_dft=0&ns_ap_bt=0&ns_ap_dbt=0&ns_ap_dit=265518390926&ns_ap_as=0&ns_ap_das=265518390926&ns_ap_it=265518390926&ns_ap_ut=60000&ns_ap_lang=en&ns_ap_ar=armv7l&ns_ts=1527822456880&ns_ap_cfg=01011-000-3C-7D0-64-A-1F-1E-0&ns_ap_env=1-1-111-1-2&cs_sub=b&cs_rip=1.38.14.2&cs_metro_code=0&cs_reg=16&cs_ec=IN&cs_boc=0&ns_ak_d_aud=none&ns_ak_d_vce=none",
          "/b?c1=19&c12=d332d77b06ca0afbc43eef55053f9e71-cs31&c2=17304450&dropped=0&name=start&ns_ak=euw0eekh84VRxi7lFobQWGg%2BC%2BkLAF0XtBRJTq9zkiGi1hJ7qkXNymmT7Fkp8wodnAQZwrAJbGEZnBd4fAPNneS4Tnpa4Bts0DDmk2r7fxHHdt%2FAc%2Fe8WpKo4JvSOS7Oe7M%2FDmS7E5VjSQVHT4IKQOQG9P25nJwcNumk5STVhR8%3D&ns_ap_an=ABP%20LIVE%20News&ns_ap_ar=armv7l&ns_ap_as=0&ns_ap_bi=com.winit.starnews.hin&ns_ap_bt=0&ns_ap_cfg=0101-000-3C-7D0-64-A-1F-1E-0&ns_ap_cs=2718&ns_ap_csf=1&ns_ap_das=386555&ns_ap_dbt=0&ns_ap_device=Aqua_3G_Pro&ns_ap_dft=305277&ns_ap_dit=81278&ns_ap_ec=1&ns_ap_env=2-1-111&ns_ap_ev=start&ns_ap_fg=1&ns_ap_ft=305277&ns_ap_gs=1521818266898&ns_ap_i3=f348a8e958ee2cd71c8fce4719eaf08d&ns_ap_id=1527853845885&ns_ap_install=1526746612271&ns_ap_it=81278&ns_ap_jb=0&ns_ap_lang=en&ns_ap_lastrun=1527849446526&ns_ap_pfm=android&ns_ap_pfv=4.4.2&ns_ap_pn=android&ns_ap_pv=4.4.2&ns_ap_res=480x800&ns_ap_runs=2718&ns_ap_sd=480x800&ns_ap_smv=2.13&ns_ap_sv=5.2.0.170406&ns_ap_usage=990717&ns_ap_ut=60000&ns_ap_ver=9.3.6&ns_nc=1&ns_of_t=1527853845885&ns_radio=none&ns_ts=1527856122045&ns_type=view&ns_utc=1527856124601&cs_metro_code=0&cs_reg=19&orig_ts=1527856124.601&cs_ec=IN&cs_boc=0&ns_ak_d_aud=6dd71f2a1cac34038d59c8d45a0d3c05&ns_ak_d_vce=none")

我需要提取“ ns_ap_dft =“和下一个“&”之间的信息。

所以结果应该是
0
305277

有人可以帮助我吗?

感谢一百万

1 个答案:

答案 0 :(得分:3)

使用这种积极的眼光。

  • (?<=ns_ap_dft=)意味着找到以ns_ap_dft=开头的内容,
  • .*?表示任何字符,但应尽可能少(因为您只希望直到第一个&为止),
  • (?=&)意味着找到&之前的东西。
text <- c(
  "/p2?c1=19&c2=6036484&ns_ap_an=Cricbuzz%20Cricket%20Scores%20%26%20News&ns_ap_pn=android&ns_ap_pv=5.1&c12=32ba1387a295d3a195ed13a8a23a156e-cs31&ns_ak=none&name=background&ns_ap_ec=1&ns_ap_ev=start&ns_ap_device=along8321_emmc_706m&ns_ap_id=1527822461935&ns_ap_csf=1&ns_ap_bi=com.cricbuzz.android&ns_ap_pfm=android&ns_ap_pfv=5.1&ns_ap_ver=4.4.002&ns_ap_sv=5.5.1.170927&ns_ap_bv=1.2.1.170927&ns_ap_smv=2.17&ns_type=view&ns_radio=wwan&ns_nc=1&ns_ap_gs=1527821586037&ns_ap_jb=1&ns_ap_res=1024x552&ns_ap_sd=1024x600&ns_ap_po=0x0&ns_ap_install=1527821586037&ns_ap_lastrun=0&ns_ap_cs=4&ns_ap_runs=4&ns_ap_usage=870857&ns_ap_fg=0&ns_ap_ft=0&ns_ap_dft=0&ns_ap_bt=0&ns_ap_dbt=0&ns_ap_dit=265518390926&ns_ap_as=0&ns_ap_das=265518390926&ns_ap_it=265518390926&ns_ap_ut=60000&ns_ap_lang=en&ns_ap_ar=armv7l&ns_ts=1527822456880&ns_ap_cfg=01011-000-3C-7D0-64-A-1F-1E-0&ns_ap_env=1-1-111-1-2&cs_sub=b&cs_rip=1.38.14.2&cs_metro_code=0&cs_reg=16&cs_ec=IN&cs_boc=0&ns_ak_d_aud=none&ns_ak_d_vce=none",
  "/b?c1=19&c12=d332d77b06ca0afbc43eef55053f9e71-cs31&c2=17304450&dropped=0&name=start&ns_ak=euw0eekh84VRxi7lFobQWGg%2BC%2BkLAF0XtBRJTq9zkiGi1hJ7qkXNymmT7Fkp8wodnAQZwrAJbGEZnBd4fAPNneS4Tnpa4Bts0DDmk2r7fxHHdt%2FAc%2Fe8WpKo4JvSOS7Oe7M%2FDmS7E5VjSQVHT4IKQOQG9P25nJwcNumk5STVhR8%3D&ns_ap_an=ABP%20LIVE%20News&ns_ap_ar=armv7l&ns_ap_as=0&ns_ap_bi=com.winit.starnews.hin&ns_ap_bt=0&ns_ap_cfg=0101-000-3C-7D0-64-A-1F-1E-0&ns_ap_cs=2718&ns_ap_csf=1&ns_ap_das=386555&ns_ap_dbt=0&ns_ap_device=Aqua_3G_Pro&ns_ap_dft=305277&ns_ap_dit=81278&ns_ap_ec=1&ns_ap_env=2-1-111&ns_ap_ev=start&ns_ap_fg=1&ns_ap_ft=305277&ns_ap_gs=1521818266898&ns_ap_i3=f348a8e958ee2cd71c8fce4719eaf08d&ns_ap_id=1527853845885&ns_ap_install=1526746612271&ns_ap_it=81278&ns_ap_jb=0&ns_ap_lang=en&ns_ap_lastrun=1527849446526&ns_ap_pfm=android&ns_ap_pfv=4.4.2&ns_ap_pn=android&ns_ap_pv=4.4.2&ns_ap_res=480x800&ns_ap_runs=2718&ns_ap_sd=480x800&ns_ap_smv=2.13&ns_ap_sv=5.2.0.170406&ns_ap_usage=990717&ns_ap_ut=60000&ns_ap_ver=9.3.6&ns_nc=1&ns_of_t=1527853845885&ns_radio=none&ns_ts=1527856122045&ns_type=view&ns_utc=1527856124601&cs_metro_code=0&cs_reg=19&orig_ts=1527856124.601&cs_ec=IN&cs_boc=0&ns_ak_d_aud=6dd71f2a1cac34038d59c8d45a0d3c05&ns_ak_d_vce=none"
)

library(stringr)
text %>%
  str_extract("(?<=ns_ap_dft=).*?(?=&)")
#> [1] "0"      "305277"

reprex package(v0.2.0)于2018-08-21创建。