正则表达式:删除除第一个字符和最后一个数字之外的所有内容

标签 regex r

我知道 ^. 是第一个字符,(\d+)(?!.*\d) 是最后一个数字。我尝试在这些字符之间使用 | 并尝试查找第二个字符的代码,但没有成功。

这是在R中。

举个例子:

'ABCD 一些随机单词和空格 1234' 当我这样做时应该输出 'A4'

sub([此处的正则表达式], "", 'ABCD 一些随机单词和空格 1234')

最佳答案

如果您使用 ^.|(\d+)(?!.*\d),该模式将仅匹配第一个字符并使用 sub 将其删除,如果与 gsub 一起使用,并且在替换模式中没有反向引用,则会删除第一个字符和最后 1+ 位数字。请参阅this pattern demo .

你可以使用

sub("^(.).*(\\d).*$", "\\1\\2", "ABCD some random words and spaces 1234") 

请参阅R demoregex demo .

此 TRE 正则表达式模式匹配:

  • ^ - 字符串开头
  • (.) - 第 1 组捕获任何字符
  • .* - 0+ 任何尽可能多的字符,直到最后一个...
  • (\\d) - 第 2 组捕获数字
  • .* - 字符串的其余部分
  • $ - 字符串结尾。

\\1\\2 替换模式将使用组 1 和组 2 捕获的值重新插入到结果中。

关于正则表达式:删除除第一个字符和最后一个数字之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576492/

相关文章:

r - 更快的 %in% 运算符

r - dplyr group_by 动态列

PHP:用于包含 3-9 个字母和 5-50 个数字的字符串的正则表达式

python - 查找列表中的通用子列表

java - 我无法在 Mac OS 10.11.5 上运行 R xlsx 包 - El Capitan

r - 函数 .C -- 参数设置编译失败

r - 为 aes() 内的 geom_rect 中的填充和颜色指定不同的 alpha?

正则表达式仅匹配字母

r - 使用 grepl 搜索文本中的多个子字符串之一

regex - 任何人都可以解释 "sed-regex here"中发生了什么