我知道^.
是第一个字符,(\d+)(?!.*\d)
是最后一个字符。我尝试在这些之间使用|
并尝试为第二个字符找到代码,但没有成功。
这是R
。
以例如:
当我时, 'ABCD some random words and spaces 1234'
应输出'A4'
sub([regex here], "", 'ABCD some random words and spaces 1234')
答案 0 :(得分:3)
如果您使用^.|(\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组捕获的值重新插入结果。