删除向量中每个元素中第 2 次出现“-”后的所有字符
Remove all characters after the 2nd occurrence of "-" in each element of a vector
我想删除向量中每个元素中第 2 次出现“-”之后的所有字符。
Initial string
aa-bbb-cccc => aa-bbb
aa-vvv-vv => aa-vvv
aa-ddd => aa-ddd
有什么帮助吗?
根据示例输入和预期输出判断,我假设您需要删除所有以第二个连字符开头的内容。
您可以使用
sub("^([^-]*-[^-]*).*", "\1", x)
详情:
^
- 字符串开头
([^-]*-[^-]*)
- 第 1 组捕获 -
、-
以外的 0+ 个字符和 -
以外的 0+ 个字符
.*
- 任何 0+ 个字符(在像这样的 TRE 正则表达式中,点也匹配换行符。)
\1
(</code>) 是对捕获到组 1 中的文本的反向引用。</p>
<p><a href="http://ideone.com/MPfE0T" rel="noreferrer">R demo</a>:</p>
<pre><code>x <- c("aa-bbb-cccc", "aa-vvv-vv", "aa-ddd")
sub("^([^-]*-[^-]*).*", "\1", x)
## => [1] "aa-bbb" "aa-vvv" "aa-ddd"
我想删除向量中每个元素中第 2 次出现“-”之后的所有字符。
Initial string
aa-bbb-cccc => aa-bbb
aa-vvv-vv => aa-vvv
aa-ddd => aa-ddd
有什么帮助吗?
根据示例输入和预期输出判断,我假设您需要删除所有以第二个连字符开头的内容。
您可以使用
sub("^([^-]*-[^-]*).*", "\1", x)
详情:
^
- 字符串开头([^-]*-[^-]*)
- 第 1 组捕获-
、-
以外的 0+ 个字符和-
以外的 0+ 个字符
.*
- 任何 0+ 个字符(在像这样的 TRE 正则表达式中,点也匹配换行符。)
\1
(</code>) 是对捕获到组 1 中的文本的反向引用。</p>
<p><a href="http://ideone.com/MPfE0T" rel="noreferrer">R demo</a>:</p>
<pre><code>x <- c("aa-bbb-cccc", "aa-vvv-vv", "aa-ddd")
sub("^([^-]*-[^-]*).*", "\1", x)
## => [1] "aa-bbb" "aa-vvv" "aa-ddd"