我知道 ^.
是第一个字符,(\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 demo和 regex demo .
此 TRE 正则表达式模式匹配:
^
- 字符串开头(.)
- 第 1 组捕获任何字符.*
- 0+ 任何尽可能多的字符,直到最后一个...(\\d)
- 第 2 组捕获数字.*
- 字符串的其余部分$
- 字符串结尾。
\\1\\2
替换模式将使用组 1 和组 2 捕获的值重新插入到结果中。
关于正则表达式:删除除第一个字符和最后一个数字之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576492/