R:从第一个字符到字符串末尾的正则表达式

埃斯本·艾克哈特

我这里有这样的字符串:

a <- "-en eller -et eller (uofficielt) -'en eller (uofficielt) -'et"
b <- "-ten, -ter, -terne"

我想在 R 中使用正则表达式将文本从“-”提取到第一个非字符,从而得到:

en et 'en 'et
ten ter terne

我找到了一个解决方案,但它只是感觉不太令人满意或优雅

a <- unlist(strsplit(a, " |,"))
a <- a[grep("-", a)]
a <- gsub("-", "", a)

b <- unlist(strsplit(b, " |,"))
b <- b[grep("-", b)]
b <- gsub("-", "", b)

你有没有建议一个更优雅的单线,提取我想要的所有结局?

维克多·斯特里比尤夫

我认为您需要匹配-前面没有字符字符的 a (即,当它是复合词的一部分时不匹配),并且'连字符后面有一个可选的,然后是 1+ 字符字符。然后,您可以使用

a <- "-en eller -et eller (uofficielt) -'en eller (uofficielt) -'et"
b <- "-ten, -ter, -terne"
pat <- "\\B-\\K'?\\w+"
res_a <- regmatches(a, gregexpr(pat, a, perl=TRUE))
unlist(res_a)
## [1] "en"  "et"  "'en" "'et"
res_b <- regmatches(b, gregexpr(pat, b, perl=TRUE))
unlist(res_b)
## [1] "ten"   "ter"   "terne"

查看在线 R 演示

图案详情

  • \\B - 非单词边界
  • - - 一个连字符
  • \\K - 匹配重置运算符
  • '? - 一个可选的 '
  • \\w+ - 1 个或多个字母、数字或 _

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式,从字符串末尾到右边的第一个字符(点)匹配char('-')

来自分类Dev

在两个字符串(包括第一个字符串)之间匹配的正则表达式

来自分类Dev

正则表达式匹配不包括第一个字符的字符串

来自分类Dev

正则表达式-回显字符串的第一个字符

来自分类Dev

正则表达式验证仅具有小写字母的字符串,第一个字符必须为字母

来自分类Dev

Powershell正则表达式匹配第一个字符串以外的字符串

来自分类Dev

正则表达式从一个字符串到另一个字符串

来自分类Dev

正则表达式仅检查字符串C#中的第一个字符

来自分类Dev

正则表达式替换特定匹配项的字符串的第一个和最后一个字符

来自分类Dev

Bash正则表达式检查字符串的第一个字符是否为数字

来自分类Dev

正则表达式不捕获第一个字符

来自分类Dev

正则表达式删除与第一个字符串匹配的行?

来自分类Dev

正则表达式表达大写的第一个字符

来自分类Dev

正则表达式排除不排除仅字符串的第一个字符

来自分类Dev

基于熊猫/正则表达式的方法来匹配字符串列表中的第一个字符串

来自分类Dev

使用Ansible在正则表达式匹配行的末尾附加一个字符串

来自分类Dev

匹配正则表达式中的第一个字符?

来自分类Dev

正则表达式PCRE:验证字符串以匹配第一个字符串集而不是最后一个字符串

来自分类Dev

正则表达式匹配字符串的第一个和最后一个字符,但是为什么呢?

来自分类Dev

正则表达式以验证仅具有小写字母的字符串,第一个字符必须为字母

来自分类Dev

合并2个正则表达式-获取带连字符的字符串的第一个字符

来自分类Dev

正则表达式仅检查字符串C#中的第一个字符

来自分类Dev

正则表达式替换特定匹配项的字符串的第一个和最后一个字符

来自分类Dev

非法第一个字符的正则表达式

来自分类Dev

C#:如果某些字符是使用正则表达式的字符串的第一个字符,则替换它们

来自分类Dev

正则表达式删除与第一个字符串匹配的行?

来自分类Dev

正则表达式表达大写的第一个字符

来自分类Dev

两个字符串之间的 JavaScript 正则表达式而不捕获第一个字符串

来自分类Dev

使用正则表达式获取第一个字符

Related 相关文章

  1. 1

    正则表达式,从字符串末尾到右边的第一个字符(点)匹配char('-')

  2. 2

    在两个字符串(包括第一个字符串)之间匹配的正则表达式

  3. 3

    正则表达式匹配不包括第一个字符的字符串

  4. 4

    正则表达式-回显字符串的第一个字符

  5. 5

    正则表达式验证仅具有小写字母的字符串,第一个字符必须为字母

  6. 6

    Powershell正则表达式匹配第一个字符串以外的字符串

  7. 7

    正则表达式从一个字符串到另一个字符串

  8. 8

    正则表达式仅检查字符串C#中的第一个字符

  9. 9

    正则表达式替换特定匹配项的字符串的第一个和最后一个字符

  10. 10

    Bash正则表达式检查字符串的第一个字符是否为数字

  11. 11

    正则表达式不捕获第一个字符

  12. 12

    正则表达式删除与第一个字符串匹配的行?

  13. 13

    正则表达式表达大写的第一个字符

  14. 14

    正则表达式排除不排除仅字符串的第一个字符

  15. 15

    基于熊猫/正则表达式的方法来匹配字符串列表中的第一个字符串

  16. 16

    使用Ansible在正则表达式匹配行的末尾附加一个字符串

  17. 17

    匹配正则表达式中的第一个字符?

  18. 18

    正则表达式PCRE:验证字符串以匹配第一个字符串集而不是最后一个字符串

  19. 19

    正则表达式匹配字符串的第一个和最后一个字符,但是为什么呢?

  20. 20

    正则表达式以验证仅具有小写字母的字符串,第一个字符必须为字母

  21. 21

    合并2个正则表达式-获取带连字符的字符串的第一个字符

  22. 22

    正则表达式仅检查字符串C#中的第一个字符

  23. 23

    正则表达式替换特定匹配项的字符串的第一个和最后一个字符

  24. 24

    非法第一个字符的正则表达式

  25. 25

    C#:如果某些字符是使用正则表达式的字符串的第一个字符,则替换它们

  26. 26

    正则表达式删除与第一个字符串匹配的行?

  27. 27

    正则表达式表达大写的第一个字符

  28. 28

    两个字符串之间的 JavaScript 正则表达式而不捕获第一个字符串

  29. 29

    使用正则表达式获取第一个字符

热门标签

归档