从R中的字符串变量中提取特定值

时间:2020-10-06 16:38:29

标签: r string extract

我有一个字符变量。我需要从title=""值中提取信息。基本上,我需要""之后的title=内部的所有值。

这是示例数据集:

df <- data.frame(
  id = c(1,2,3),
  character = c('mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h+r=2"&gt;&lt;mstyle',
        'mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="r+2h=h"&gt;&lt;mstyle&',
        'mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h∙rleft(frac{2h}{2}right)"&gt;&lt;mstyle&gt'))

> df
  id                                                                                                  character
1  1                        mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h+r=2"&gt;&lt;mstyle
2  2                      mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="r+2h=h"&gt;&lt;mstyle&
3  3 mrow&gt;&lt;mn&gt;2&lt;mn&gt;&lt;mi&gt;h&lt;mi&gt;&lt;m title="h·rleft(frac{2h}{2}right)"&gt;&lt;mstyle&gt

我想要的输出是:

> df
  id                 character
1  1                     h+r=2
2  2                    r+2h=h
3  3 h·rleft(frac{2h}{2}right)

2 个答案:

答案 0 :(得分:1)

尝试一下

    private void txtSearch_KeyPress(object sender, KeyPressEventArgs e)
            {
                try
                {
                    if (e.KeyChar == (char)Keys.Enter)
                    {
                        if (!string.IsNullOrEmpty(txtSearch.Text))
                        {
                            var itemKey = _blItems.GetItemKeyByBarcode(txtSearch.Text);
                            if (itemKey > 0)
                            {
                                var model = _blItems.GetItemDetailsDataTable(itemKey);
                                dataGridView1.AutoGenerateColumns = false;
                                dataGridView1.DataSource = model;
                            }
                            txtSearch.Clear();
                            txtSearch.Select();
                        }
                    }
                }
                catch { }
            }

答案 1 :(得分:1)

您应该使用regex101创建合适的正则表达式:

https://regex101.com/r/OFJhnQ/1

然后,您可以使用str_extract来获取值。

或者您可以使用tidyr中的extract函数:

df %>% tidyr::extract(character, "title", regex="title=\"(.+)\"")